Sudoku problem(prolog) 1. Try the SWISH example with your own example 2. Compare it with picture 3. Give your comments on strategies along with the screenshots of the execution swish example: % render solutions nicely. :- use_rendering(sudoku). :- use_module(library(clpfd)). % Example by Markus Triska, taken from the SWI-Prolog manual. sudoku(Rows) :- length(Rows, 9), maplist(same_length(Rows), Rows), append(Rows, Vs), Vs ins 1..9, maplist(all_distinct, Rows), transpose(Rows, Columns), maplist(all_distinct, Columns), Rows = [A,B,C,D,E,F,G,H,I], blocks(A, B, C), blocks(D, E, F), blocks(G, H, I). blocks([], [], []). blocks([A,B,C|Bs1], [D,E,F|Bs2], [G,H,I|Bs3]) :- all_distinct([A,B,C,D,E,F,G,H,I]), blocks(Bs1, Bs2, Bs3). problem(1, [[_,_,_, _,_,_, _,_,_], [_,_,_, _,_,3, _,8,5], [_,_,1, _,2,_, _,_,_], [_,_,_, 5,_,7, _,_,_], [_,_,4, _,_,_, 1,_,_], [_,9,_, _,_,_, _,_,_], [5,_,_, _,_,_, _,7,3], [_,_,2, _,1,_, _,_,_], [_,_,_, _,4,_, _,_,9]]). /** ?- problem(1, Rows), sudoku(Rows). */
Sudoku problem(prolog)
1. Try the SWISH example with your own example
2. Compare it with picture
3. Give your comments on strategies along with the screenshots of the execution
swish example:
% render solutions nicely.
:- use_rendering(sudoku).
:- use_module(library(clpfd)).
% Example by Markus Triska, taken from the SWI-Prolog manual.
sudoku(Rows) :-
length(Rows, 9), maplist(same_length(Rows), Rows),
append(Rows, Vs), Vs ins 1..9,
maplist(all_distinct, Rows),
transpose(Rows, Columns),
maplist(all_distinct, Columns),
Rows = [A,B,C,D,E,F,G,H,I],
blocks(A, B, C), blocks(D, E, F), blocks(G, H, I).
blocks([], [], []).
blocks([A,B,C|Bs1], [D,E,F|Bs2], [G,H,I|Bs3]) :-
all_distinct([A,B,C,D,E,F,G,H,I]),
blocks(Bs1, Bs2, Bs3).
problem(1, [[_,_,_, _,_,_, _,_,_],
[_,_,_, _,_,3, _,8,5],
[_,_,1, _,2,_, _,_,_],
[_,_,_, 5,_,7, _,_,_],
[_,_,4, _,_,_, 1,_,_],
[_,9,_, _,_,_, _,_,_],
[5,_,_, _,_,_, _,7,3],
[_,_,2, _,1,_, _,_,_],
[_,_,_, _,4,_, _,_,9]]).
/** <examples>
?- problem(1, Rows), sudoku(Rows).
*/
Step by step
Solved in 2 steps