Q: The length and width of the chocolate bar are equivalent to what?
(define divides?
(lambda (b n)
(= 0 (remainder n b))))
(define exponent-of-in
(lambda (b n)
(if (not (divides? b n))
0
_______ ??? _______)))
(define exponent-of-in
(lambda (b n)
(if (not (divides? b n))
0
(+ 1 (exponent-of-in b (quotient n b))))))
(define make-game-state
(lambda (i j) (+ (* 10 i) j)))
Selector:
(define size-of-pile
(lambda (game-state pile-number)
(if (= pile-number 1)
(quotient game-state 10)
(remainder game-state 10))))
Q: What is the order of growth of size-of-pile?
| ? |
(define make-game-state
(lambda (i j) (+ (* 100 i) j)))
(define size-of-pile
(lambda (game-state pile-number)
(if (= pile-number 1)
(quotient game-state 100)
(remainder game-state 100))))
This data representation method puts an
artificial restriction on the size of piles.
While this is acceptable for 2-pile Nim,
other data types should not be subject to
such a restriction.
(remove-coins-from-pile game-state n p) ; given a state, returns a new
; state with n fewer coins in pile p
Q: (remove-coins-from-pile (make-game-state 9 6) 4 1)=???
To remove a number of coins n from pile p:
(define remove-coins-from-pile
(lambda (game-state n p)
... ??? ...
))
(define remove-coins-from-pile
(lambda (game-state n p)
(if (= p 1)
(make-game-state
(- (size-of-pile game-state 1) n)
(size-of-pile game-state 2))
(make-game-state
(size-of-pile game-state 1)
(- (size-of-pile game-state 2) n)))))
(play-with-turns (make-game-state 5 8) 'humman)
Q: What would happen?
(define play-with-turns
(lambda (game-state player)
(cond
((over? game-state) (announce-winner player))
((equal? player 'human)
(play-with-turns (human-move game-state) 'computer))
((equal? player 'computer)
(play-with-turns (computer-move game-state) 'human))
(else (error "player wasn't human or computer:" player)))))
(play-with-turns (make-game-state 5 8) 'human)
Q: Why the single quote? What would happen if we did just:
(play-with-turns (make-game-state 5 8) human) ?
> (define x 13)
> x ⇒ ???
> 'x ⇒ ???
> 'human ⇒ ???
> (define x 'y)
> (define z x)
> z ⇒ ???
(make-game-state n m) ; returns a state with n coins in
; first pile and m coins in second
(size-of-pile game-state p) ; returns number of coins in
; p-th pile of game-state