PasteRack.org
Paste # 20752
2017-10-13 19:03:45

Fork as a new paste.

Paste viewed 180 times.


Embed:

  1. #lang racket
  2.  
  3. (define ((extend char) board)
  4.   (cons char board))
  5.  
  6. (define (boards n)
  7.   (if (zero? n)
  8.       '(())
  9.       (let ([previous-boards (boards (- n 1))])
  10.         (append (map (extend "X") previous-boards)
  11.                 (map (extend "O") previous-boards)))))
  12.  
  13. (boards 3)

=>

'(("X" "X" "X")

  ("X" "X" "O")

  ("X" "O" "X")

  ("X" "O" "O")

  ("O" "X" "X")

  ("O" "X" "O")

  ("O" "O" "X")

  ("O" "O" "O"))