Xavier Nayrac

Rubyiste accro au TDD, serial blogger, apprenti data scientist, heureux utilisateur de Vim, accordéoniste.
Si vous vous sentez particulièrement généreux, suivez moi sur Twitter.

Trouves mon nombre - partie 3

| Comments

Niveau : facile

Aujourd’hui on regarde la fonction bigger, qui est l’inverse de la fonction smaller vue la dernière fois.

Voici donc notre nouveau fichier guess.rkt avec sa nouvelle fonction:

guess.rkt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#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))

La fonction bigger fait exactement l’inverse de smaller:

[~]⇒ racket
Welcome to Racket v5.3.6.
-> (enter! "guess.rkt")
-> (guess)
50
-> (bigger)
75

Et c’est tout ce qu’il nous faut pour que la machine trouve le nombre que j’ai choisi. Si par exemple je pensais au nombre 77, on continuerait ainsi:

-> (bigger)
88
-> (smaller)
81
-> (smaller)
78
-> (smaller)
76
-> (bigger)
77

La prochaine fois, on verra comment démarrer le jeu avec n’importe quelle étendue de nombres.

À demain.

Articles connexes

Commentaires