monadiccp-0.7.0: examples/Queens.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
import Control.CP.FD.Example
model :: ExampleModel ModelInt
model n = exists $ \p -> do
size p @= n
p `allin` (cte 0,n-1)
allDiff p
loopall (cte 0,n-2) $ \i -> do
loopall (i+1,n-1) $ \j -> do
(p!i) + i @/= (p!j) + j
(p!i) - i @/= (p!j) - j
return p
main = example_sat_main_single_expr model