This comment is reply for 6216 gemma: ・状態遷移を相互再帰で書く ・Gauc...(マルバツゲーム). Go to thread root.
gemma #6217(2008/04/24 12:00 GMT) [ Scheme ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
(use srfi-1) (use gauche.sequence) (define (win? l) (any (cut lset<= = <> l) '((0 1 2) (3 4 5) (6 7 8) (0 3 6) (1 4 7) (2 5 8) (0 4 8) (2 4 6)))) (let omake ((win 0) (lose 0) (draw 0)) (if (<= 10000 (+ win lose draw)) (format #t " player1 won: ~a\n player2 won: ~a\n draw: ~a\n" win lose draw) (receive (p1 p2) (split-at (shuffle '(0 1 2 3 4 5 6 7 8)) 5) (or (and-let* ((i (list-index win? (list (cddr p1) (cdr p2) (cdr p1) p2 p1)))) (if (even? i) (omake (+ 1 win) lose draw) (omake win (+ 1 lose) draw))) (omake win lose (+ 1 draw))))))
Rating0/0=0.00-0+
[ reply ]
gemma #6217() [ Scheme ] Rating0/0=0.00
結果
player1 won: 5907
player2 won: 2872
draw: 1221
Rating0/0=0.00-0+