Comment detail
マルバツゲーム (Nested Flatten)
オマケです。せっかく書いたので。問題の趣旨にあってないし、ゴルフとしても中途半端です。
結果
player1 won: 5907
player2 won: 2872
draw: 1221
結果
player1 won: 5907
player2 won: 2872
draw: 1221
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))))))
|



gemma #6216() [ Scheme ] Rating0/0=0.00
Rating0/0=0.00-0+
1 reply [ reply ]