packages feed

egison-5.0.0: sample/n-queen.egi

--
-- This file has been auto-generated by egison-translator.
--

def eightQueen : [[Integer]] :=
  matchAll [1, 2, 3, 4, 5, 6, 7, 8] as multiset integer with
    | $a_1 :: (!#(a_1 - 1) & !#(a_1 + 1) & $a_2) :: (!#(a_1 - 2) & !#(a_1 +
      2) & !#(a_2 - 1) & !#(a_2 + 1) & $a_3) :: (!#(a_1 - 3) & !#(a_1 +
      3) & !#(a_2 - 2) & !#(a_2 + 2) & !#(a_3 - 1) & !#(a_3 +
      1) & $a_4) :: (!#(a_1 - 4) & !#(a_1 + 4) & !#(a_2 - 3) & !#(a_2 +
      3) & !#(a_3 - 2) & !#(a_3 + 2) & !#(a_4 - 1) & !#(a_4 +
      1) & $a_5) :: (!#(a_1 - 5) & !#(a_1 + 5) & !#(a_2 - 4) & !#(a_2 +
      4) & !#(a_3 - 3) & !#(a_3 + 3) & !#(a_4 - 2) & !#(a_4 + 2) & !#(a_5 -
      1) & !#(a_5 + 1) & $a_6) :: (!#(a_1 - 6) & !#(a_1 + 6) & !#(a_2 -
      5) & !#(a_2 + 5) & !#(a_3 - 4) & !#(a_3 + 4) & !#(a_4 - 3) & !#(a_4 +
      3) & !#(a_5 - 2) & !#(a_5 + 2) & !#(a_6 - 1) & !#(a_6 +
      1) & $a_7) :: (!#(a_1 - 7) & !#(a_1 + 7) & !#(a_2 - 6) & !#(a_2 +
      6) & !#(a_3 - 5) & !#(a_3 + 5) & !#(a_4 - 4) & !#(a_4 + 4) & !#(a_5 -
      3) & !#(a_5 + 3) & !#(a_6 - 2) & !#(a_6 + 2) & !#(a_7 - 1) & !#(a_7 +
      1) & $a_8) :: [] -> a

def nQueen (n: Integer) : [[Integer]] :=
  matchAll between 1 n as multiset integer with
    | $a_1 :: (loop $i (2, n, _)
                 ((loop $i1 (1, i - 1, _)
                     (!#(a_i1 - (i - i1)) & !#(a_i1 + (i - i1)) & ...)
                     $a_i) :: ...)
                 []) -> a

nQueen 4

nQueen 5

nQueen 6

nQueen 7

nQueen 8

nQueen 9

nQueen 10

nQueen 11