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.
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.