summaryrefslogtreecommitdiff
path: root/prolog/sudoku.pl
blob: 159e212e54746eea5b8aabde6f14ffd967240a79 (plain) (blame)
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]).