1234567891011121314151617181920 |
- module QueenAttack
-
- let allowed pos = pos > -1 && pos < 8
-
- let create (position: int * int) =
- match position with
- | (r, c) when allowed r && allowed c -> true
- | _ -> false
-
- let difference a b = abs (a - b)
-
- let diagonallyAttacked (a: int * int) (b: int * int) =
- let cmpARow = a |> fst |> difference
- let cmpACol = a |> snd |> difference
- (b |> fst |> cmpARow) = (b |> snd |> cmpACol)
-
- let canAttack (queen1: int * int) (queen2: int * int) =
- (=) (queen1 |> fst) (queen2 |> fst) ||
- (=) (queen1 |> snd) (queen2 |> snd) ||
- diagonallyAttacked queen1 queen2
|