learning F#, it seems pretty cool, favourite functional language so far.
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

QueenAttack.fs 592B

1234567891011121314151617181920
  1. module QueenAttack
  2. let allowed pos = pos > -1 && pos < 8
  3. let create (position: int * int) =
  4. match position with
  5. | (r, c) when allowed r && allowed c -> true
  6. | _ -> false
  7. let difference a b = abs (a - b)
  8. let diagonallyAttacked (a: int * int) (b: int * int) =
  9. let cmpARow = a |> fst |> difference
  10. let cmpACol = a |> snd |> difference
  11. (b |> fst |> cmpARow) = (b |> snd |> cmpACol)
  12. let canAttack (queen1: int * int) (queen2: int * int) =
  13. (=) (queen1 |> fst) (queen2 |> fst) ||
  14. (=) (queen1 |> snd) (queen2 |> snd) ||
  15. diagonallyAttacked queen1 queen2