Racket: Trouves mon nombre - partie 4
Suite à l’article précédent,
on voit aujourd’hui la fonction start
qui permet de démarrer le jeu avec
n’importe quelle étendue de nombres.
Voici tout d’abord le programme complet:
#lang racket
(define lower 1)
(define upper 100)
(define (guess)
(quotient (+ lower upper) 2))
(define (smaller)
(set! upper (max lower (sub1 (guess))))
(guess))
(define (bigger)
(set! lower (min upper (add1 (guess))))
(guess))
(define (start n m)
(set! lower (min n m))
(set! upper (max n m))
(guess))
On peut maintenant demander à la machine de deviner un nombre entre n et m:
[~]⇒ racket
Welcome to Racket v5.3.6.
-> (enter! "guess.rkt")
-> (start 1 10)
5
-> (bigger)
8
-> (smaller)
6
La fonction start
utilise des notions déjà vues dans les articles
précédents.
(define (start n m)
(set! lower (min n m))
(set! upper (max n m))
(guess))
Grâce à set!
, on redéfini la valeur des variables lower
et upper
. Puis
on débute le jeu en lançant guess
.
La variable lower
se voit affecter la plus petite des valeurs passées en
arguments, grâce à min
. Et upper
se voit affecter la plus grande
grâce à max
. Du coup, l’ordre des arguments de start
n’a plus
d’importance:
-> (start 1000 1)
500
-> (start 1 1000)
500
Voilà qui conclue cette petite introduction au langage Racket.
À demain.
/ / / / / / / / / /