Reptes
Repte 10 — El detector ★★★ Avançat
En Karel patrulla un corredor horitzontal. Al llarg del corredor hi ha
alcoves (obertures d'una sola casella cap al Nord o cap al Sud).
Algunes alcoves contenen una perla; d'altres estan buides.
La missió d'en Karel: recórrer el corredor d'un extrem a l'altre i recollir les perles de dins de totes les alcoves, independentment de si l'alcova s'obre cap al Nord o cap al Sud.
La teva feina: escriu un programa que funcioni per a qualsevol longitud de corredor i qualsevol distribució d'alcoves.
La missió d'en Karel: recórrer el corredor d'un extrem a l'altre i recollir les perles de dins de totes les alcoves, independentment de si l'alcova s'obre cap al Nord o cap al Sud.
La teva feina: escriu un programa que funcioni per a qualsevol longitud de corredor i qualsevol distribució d'alcoves.
💡 Pista — com detectar una alcova?
Una alcova és una obertura lateral:
left_is_clear() (nord) o
right_is_clear() (sud) a la casella actual. Quan en detectes una,
entra-hi (gira + avança), comprova si hi ha perla, i torna al corredor.
💡 Pista — explora_nord() i explora_sud()
Defineix dues funcions que entrin a l'alcova, recullin la perla si n'hi ha,
i retornin en Karel al corredor mirant Est. La postcondició ha de ser exactament
la mateixa que la precondició: Karel al corredor, mirant Est, a punt per continuar.
💡 Pista — if separats, no elif
A cada casella, en Karel ha de comprovar si hi ha alcova al nord i també
si hi ha alcova al sud. Les dues comprovacions són independents: una casella podria
tenir obertura als dos costats. Per tant, necessites dos
if separats,
no un elif.