1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
valid([]).
valid([H|T]) :-
fd_all_different(H),
valid(T).
sudoku(Puzzle, Solution) :-
Solution = Puzzle,
Puzzle = [S11,S12,S13,S14,
S21,S22,S23,S24,
S31,S32,S33,S34,
S41,S42,S43,S44],
fd_domain(Puzzle,1,4),
Row1 = [S11,S12,S13,S14],
Row2 = [S21,S22,S23,S24],
Row3 = [S31,S32,S33,S34],
Row4 = [S41,S42,S43,S44],
Col1 = [S11,S21,S31,S41],
Col2 = [S12,S22,S32,S42],
Col3 = [S13,S23,S33,S43],
Col4 = [S14,S24,S34,S44],
Sqr1 = [S11,S12,S21,S22],
Sqr2 = [S13,S14,S23,S24],
Sqr3 = [S31,S32,S41,S42],
Sqr4 = [S33,S34,S43,S44],
valid([Row1, Row2, Row3, Row4,
Col1, Col2, Col3, Col4,
Sqr1, Sqr2, Sqr3, Sqr4]).
|