Skip to content

Instantly share code, notes, and snippets.

@gnab
Created October 22, 2012 20:23
Show Gist options
  • Save gnab/3933892 to your computer and use it in GitHub Desktop.
Save gnab/3933892 to your computer and use it in GitHub Desktop.
Haskell 3x3 Tic-Tac-Toe
data Cell = X | O | N deriving (Show, Eq)
board = [X,X,O,
O,X,X,
X,O,O]
winner [a,b,c,
d,e,f,
g,h,i] | isWinner X = X
| isWinner O = O
| otherwise = N
where isWinner player = any (belongsTo player) $ concat [diag, rows, cols]
belongsTo player = all (== player)
diag = [[a,e,i], [c,e,g]]
rows = [[a,b,c], [d,e,f], [g,h,i]]
cols = [[a,d,g], [b,e,h], [c,f,i]]
main = do
putStrLn $ show $ winner board
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment