Knight's tour: Difference between revisions

Content added Content deleted
Line 3,220: Line 3,220:
knightMoves :: Square -> [Square]
knightMoves :: Square -> [Square]
knightMoves (x, y) =
knightMoves (x, y) =
let onBoard = (&&) . (0 <) <*> (9 >)
[(1, 2), (1, -2), (-1, 2), (-1, -2), (2, 1), (2, -1), (-2, 1), (-2, -1)] >>=
in (=<<)
(\(i, j) ->
(\(i, j) ->
let a = x + i
let a = x + i
b = y + j
b = y + j
in bool [] [(a, b)] (onBoard a && onBoard b))

in bool [] [(a, b)] (onBoard a && onBoard b))
onBoard :: Int -> Bool
[(1, 2), (1, -2), (-1, 2), (-1, -2), (2, 1), (2, -1), (-2, 1), (-2, -1)]
onBoard = (&&) . (0 <) <*> (9 >)


-- TEST ---------------------------------------------------
-- TEST ---------------------------------------------------