Quand Guido était adolescent, il était un peu rebèle. Ses parents lui avaient toujours indiqué la moindre petite chose à faire : chaque virage, chaque pas. Il décida un jour de déclarer : "Je peux prendre mes propres décisions !" et se mit à expliquer à ses parents comment lui parler pour utiliser ces nouvelles capacités.
Il leur parla d'espressions booléennes, qui pouvaient juste être vraies ou fausses. Guido ferait des choses différentes selon que le résultat de la condition serait vrai ou faux. Voici un des exemples qu'il donna :
if next_to_a_beeper: pickbeeper
Guido a la capacité de sonder le monde qui l'entoure et d'agir en conséquence. "Golly, ce que tu grandis vite !" lui dirent ses parents. Ils lui demandèrent ce qu'il pouvait sonder, et il leur fournit cette liste :
front_is_clear | Vrai si il n'y a pas de mur directement devant Guido. Faux si il y a un mur. |
front_is_blocked | Vrai s'il y a un mur devant Guido. Faux sinon. |
left_is_clear | Vrai s'il n'y a pas de mur directement à gauche de Guido. Faux s'il y en a un. |
left_is_blocked | Vrai s'il y a un mur directement à gauche de Guido. Faux sinon. |
right_is_clear | Vrai s'il n'y a pas de mur directement à droite de Guido. Faux s'il y en a un. |
right_is_blocked | Vrai s'il y a un mur directement à droite de Guido. Faux sinon. |
next_to_a_beeper | Vrai si Guido est sur une intersection comportant au moins une sonnette. Faux sinon. |
not_next_to_a_beeper | Vrai si l'intersection courante est vide; Faux si elle comporte au moins une sonnette. |
any_beepers_in_beeper_bag | Vrai s'il reste au moins une sonnette dans le sac de Guido. Faux si son sac est vide. |
no_beepers_in_beeper_bag | Vrai si le sac de Guido est vide. Faux s'il y reste au moins une sonnette. |
facing_north | Vrai si Guido est orienté vers le nord. Faux sinon. |
not_facing_north | Vrai si Guido n'est pas orienté vers le nord. Faux s'il est orienté vers le nord. |
facing_south | Vrai si Guido est orienté vers le sud. Faux sinon. |
not_facing_south | Vrai si Guido n'est pas orienté vers le sud. Faux s'il est orienté vers le sud. |
facing_east | Vrai si Guido est orienté vers l'est; Faux sinon. |
not_facing_east | Vrai si Guido n'est pas orienté vers l'est. Faux s'il est orienté vers l'est. |
facing_west | Vrai si Guido est orienté vers l'ouest. Faux sinon. |
not_facing_west | Vrai si Guido n'est pas orienté vers l'ouest. Faux s'il est orienté vers l'ouest. |
Guido n'a pas accompli son service communautaire pour recevoir son diplome d'études secondaires. Il est donc assigné à rammasser les poubelles de la deuxième rue. Construisez un monde contenant des sonnettes disséminées sur la deuxième rue entre la première et la 12ème avenue. Il ne peut y avoir qu'une sonnette par intersection, mais certaines intersections peuvent être vides. Guido démarrera à l'intersection de la 1ère avenue et de la 2ème rue, regardant vers l'est.
Le monde de départ pourrait ressembler à ceci:
Faites parcourir la seconde rue à Guido, rammassant toutes les sonnettes qu'il trouve sur son passage. Souvenez-vous que s'il n'y a pas de sonnette à une intersection et que vous demandez à Guido d'en prendre une, il se plaindra et s'arrêtera. Utilisez l'un des tests de la table ci-dessus pour décider si une sonnette est à récupérer. Quand Guido atteint la 12ème rue, il doit rammener toutes les sonnettes à sa position de départ, s'orienter de nouveau vers l'est et s'éteindre.
Avec la position de départ ci-dessus, les choses devraient ressembler à cela à la fin :
Copyright © 2003 Roger Frank.