Repte 5 — El serpentí

Reptes

Repte 5 — El serpentí ★★ Intermedi

El fons marí té dues files de caselles (la de baix i la de dalt) i un nombre de perles escampades per les dues files. En Karel comença a la cantonada inferior esquerra mirant cap a l'Est.

La seva missió: recollir totes les perles fent un recorregut en ziga-zaga — primer la fila inferior d'Est a Oest (d'esquerra a dreta), llavors pujar a la fila superior, i finalment la fila superior de l'Est a l'Oest (de dreta a esquerra).

La teva feina: escriu un programa que funcioni sigui quina sigui l'amplada del món. L'amplada és desconeguda: el teu codi no pot dependre del nombre de caselles.
💡 Pista — el gir entre files Quan en Karel arriba a l'extrem dret de la fila inferior, ha de pujar a la fila de dalt i orientar-se cap a l'Oest. Quants turn_left() necessita per passar de mirar l'Est a mirar l'Oest passant pel Nord? Recorda que un turn_left() gira 90° i turn_around() gira 180°. Dissenya el gir amb cura: si en Karel no queda orientat exactament cap a l'Oest quan comença la fila superior, el segon while no avançarà ni un pas.
💡 Pista — l'error de pal de paller (fencepost) El bucle while front_is_clear() s'atura abans de moure's a l'última casella. Quan el while acabi, en Karel és a l'última posició però encara no l'ha comprovat. Afegeix un if pearl_here(): grab() fora del while per no perdre cap perla de l'extrem.