Racket: Trouves mon nombre - partie 2
Suite de l’article d’hier, aujourd’hui on ajoute la fonction
smaller
à notre petit jeu textuel.
Voici le fichier guess.rkt
avec la nouvelle fonction:
Cette fonction change l’étendue du nombre à trouver, puis fait une nouvelle proposition:
[~]⇒ racket
Welcome to Racket v5.3.6.
-> (enter! "guess.rkt")
-> (guess)
50
-> (smaller)
25
Voyons notre nouvelle fonction en détail:
Si le nombre à trouver est plus petit que 50, il est donc compris entre
1 et 49. Il faut donc changer la limite haute (upper
) pour refléter
cette nouvelle donne.
Le rôle de set!
est de redéfinir une variable. Ici, on va changer le
contenu de la variable upper
.
La fonction sub1
décremente le nombre passé en argument, donc
(sub1 (guess))
renvoie 49. Et nous prenons, grâce à max
, le nombre maximum entre
celui-ci (49) et la valeur de la limite basse, ce qui permet de
s’assurer que la valeur de upper
ne sera jamais inférieure à
la valeur de lower
. Ce qu’on peut vérifier en continuant à évaluer
smaller
:
-> (smaller)
25
-> (smaller)
12
-> (smaller)
6
-> (smaller)
3
-> (smaller)
1
-> (smaller)
1
-> (smaller)
1
...
La prochaine fois on verra la fonction inverse: bigger
que vous
pouvez essayer de coder par vous-même en attendant.
À demain.