1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
type inst = Tout_droit | Longer
type khepera_etat = {
compteur : int;
instruction : inst
}
type ordre = Avancer | Droite | Gauche
let etat_initial = { compteur = 0; instruction = Tout_droit}
let cyclique devant droite etat =
match etat.instruction with
| Tout_droit | Longer when devant (* mur en face, on tourne à gauche *)
-> {compteur = etat.compteur +1; instruction = Longer},Gauche
| Longer when etat.compteur = 0 -> { compteur = 0; instruction = Tout_droit}, Avancer
| Longer when not droite (* plus de mur à longer et rien devant, tourner à droite pour suivre le mur *)
-> {compteur = etat.compteur -1; instruction = Longer}, Droite
| Tout_droit
| Longer -> etat,Avancer |
Partager