sudokusolve(ProblemName):- | problem(ProblemName, Board), | sudoku(3, Board). | sudoku(N, Board):- | N2 is N*N, | dim(Board, N2,N2), | Board1..N2,1..N2 :: 1..N2, | ( for(I,1,N2), param(Board,N2) do | Row is BoardI,1..N2, | alldifferent(Row), | Col is Board1..N2,I, | alldifferent(Col) | ), | ( multifor(I,J,1,N2,N), param(Board,N) do | ( multifor(K,L,0,N-1), param(Board,I,J), | foreach(X,SubSquare) do | X is BoardI+K,J+L | ), | alldifferent(SubSquare) | ), | term_variables(Board, Vars), | % call to search predicate | write(Board). | problem(1, ( | (_, _, 2, _, _, 5, _, 7, 9), | (1, _, 5, _, _, 3, _, _, _), | (_, _, _, _, _, _, 6, _, _), | (_, 1, _, 4, _, _, 9, _, _), | (_, 9, _, _, _, _, _, 8, _), | (_, _, 4, _, _, 9, _, 1, _), | (_, _, 9, _, _, _, _, _, _), | (_, _, _, 1, _, _, 3, _, 6), | (6, 8, _, 3, _, _, 4, _, _))). |
|