/* Remainder puzzle (Kordemsky) in Picat. """ 11. Is there a number which when divided by 3 gives a remainder of 1; when divided by 4, gives a remainder of 2; when divided by 5, gives a remainder of 3; and when divided by 6, gives a remainder of 4? (Kordemsky) """ This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import cp. main => go. go ?=> puzzle(5), fail, nl. go => true. go2 ?=> puzzle2, fail, nl. go2 => true. puzzle(N) => N = 5, X = new_list(N), X[1] #> 0, foreach(I in 2..N) X[1] #= X[I]*(I+1) + I-1 end, solve([ff], X), println(X), println(x1=X[1]), nl. % another approach puzzle2 => X = new_list(4), N = new_dvar(), N #> 0, -3*X[1] + N #= 1, -4*X[2] + N #= 2, -5*X[3] + N #= 3, -6*X[4] + N #= 4, solve([ff], X++[N]), println(x=X), println(n=N), nl.