Repte 8 — El vigilant

Reptes

Repte 8 — El vigilant ★★ Intermedi

En Karel és un vigilant que patrulla el perímetre d'una illa rectangular. Comença a la cantonada inferior esquerra, mirant cap a l'Est. Ha de donar una volta completa a l'illa i tornar al punt de partida, seguint la vora exterior.

Al llarg del perímetre, algunes caselles tenen una perla. En Karel les ha de recollir totes durant la seva ronda.

La teva feina: escriu un programa que funcioni per a qualsevol mida d'illa rectangular. El teu codi no pot dependre del nombre de caselles.

Restricció: en Karel porta una perla a la motxilla. Abans de començar la ronda, la deixa al terra com a marca del punt de partida. La ronda acaba quan torna a trepitjar la marca.
💡 Pista — la regla del vigilant Defineix una funció pas_vigilant() que faci exactament un pas de la ronda: primer, si hi ha perla, recull-la; després, si pots avançar, avança; si no pots avançar (cantonada), gira a la dreta. Repeteix-ho fins que tornis al punt de partida.
💡 Pista — detectar el punt de partida Abans de començar la ronda, deixa una perla com a «marca» amb drop(). Llavors avança un pas per sortir de la marca, i el bucle principal és: while not pearl_here(): pas_vigilant(). Quan el while s'aturi, Karel haurà tornat a casa. Recull la marca al final.