Toiles et cailloux

Toiles et cailloux#

Commençons par un petit échauffement avant d’attaquer le défi ci-dessous.

Indication : quand il y a une toile, on peut la détruire avec un caillou.

Attention

Cet exercice est marqué d’un ♣ et est donc d’un niveau plus avancé ; n’hésitez pas à le passer s’il vous paraît difficile afin de ne pas perdre trop de temps, et à revenir dessus ultérieurement.

from laby.global_fr import *
carte = """
o o o o o o
o → . r w x
o o o o o o
"""
Laby(carte=carte)
/builds/py-edu-fr/py-edu-fr/intro-prog/.venv/lib/python3.12/site-packages/laby/laby.py:337: SyntaxWarning: invalid escape sequence '\w'
  p = re.compile("[A-Z]+(\w)*")
debut()
### BEGIN SOLUTION
avance()
prend()
avance()
pose()
prend()
droite()
droite()
pose()
droite()
droite() 
avance()
### END SOLUTION
ouvre()
assert est_gagnant()

Comment résoudre le labyrinthe suivant ?

Attention, le nombre de cailloux / toiles varie !

À faire

  • Rédiger une solution et remettre la cellule de test.

from laby.global_fr import *
Laby(lignes=1, colonnes=10, option="rocksAndWebs")
debut()
### BEGIN SOLUTION
def pose_derriere():
    droite()
    droite()
    pose()
    droite()
    droite()

def neutralise():
    pose()
    prend()
    avance()

def retourner_chercher_caillou():
    droite()
    droite()
    while (regarde() != Caillou):
        avance()
    prend()
    droite()
    droite()
    while (regarde() == Vide):
        avance()

droite()
while (regarde() != Sortie):
    if regarde() == Caillou:
        prend()
        avance()
        pose_derriere()
    elif regarde() == Toile:
        retourner_chercher_caillou()
        neutralise()
        pose_derriere()
    else:
        avance()
ouvre()
### END SOLUTION