Reputation: 89
sudoku(X,Board):-
Board=X,
Board =
[A1,A2,A3,A4,A5,A6,A7,A8,A9,
B1,B2,B3,B4,B5,B6,B7,B8,B9,
C1,C2,C3,C4,C5,C6,C7,C8,C9,
D1,D2,D3,D4,D5,D6,D7,D8,D9,
E1,E2,E3,E4,E5,E6,E7,E8,E9,
F1,F2,F3,F4,F5,F6,F7,F8,F9,
G1,G2,G3,G4,G5,G6,G7,G8,G9,
H1,H2,H3,H4,H5,H6,H7,H8,H9,
I1,I2,I3,I4,I5,I6,I7,I8,I9],
%rows on the board
permutation([A1,A2,A3,A4,A5,A6,A7,A8,A9],[1,2,3,4,5,6,7,8,9]),
permutation([B1,B2,B3,B4,B5,B6,B7,B8,B9],[1,2,3,4,5,6,7,8,9]),
permutation([C1,C2,C3,C4,C5,C6,C7,C8,C9],[1,2,3,4,5,6,7,8,9]),
permutation([D1,D2,D3,D4,D5,D6,D7,D8,D9],[1,2,3,4,5,6,7,8,9]),
permutation([E1,E2,E3,E4,E5,E6,E7,E8,E9],[1,2,3,4,5,6,7,8,9]),
permutation([F1,F2,F3,F4,F5,F6,F7,F8,F9],[1,2,3,4,5,6,7,8,9]),
permutation([G1,G2,G3,G4,G5,G6,G7,G8,G9],[1,2,3,4,5,6,7,8,9]),
permutation([H1,H2,H3,H4,H5,H6,H7,H8,H9],[1,2,3,4,5,6,7,8,9]),
permutation([I1,I2,I3,I4,I5,I6,I7,I8,I9],[1,2,3,4,5,6,7,8,9]),
%columns on the board
permutation([A1,B1,C1,D1,E1,F1,G1,H1,I1],[1,2,3,4,5,6,7,8,9]),
permutation([A2,B2,C2,D2,E2,F2,G2,H2,I2],[1,2,3,4,5,6,7,8,9]),
permutation([A3,B3,C3,D3,E3,F3,G3,H3,I3],[1,2,3,4,5,6,7,8,9]),
permutation([A4,B4,C4,D4,E4,F4,G4,H4,I4],[1,2,3,4,5,6,7,8,9]),
permutation([A5,B5,C5,D5,E5,F5,G5,H5,I5],[1,2,3,4,5,6,7,8,9]),
permutation([A6,B6,C6,D6,E6,F6,G6,H6,I6],[1,2,3,4,5,6,7,8,9]),
permutation([A7,B7,C7,D7,E7,F7,G7,H7,I7],[1,2,3,4,5,6,7,8,9]),
permutation([A8,B8,C8,D8,E8,F8,G8,H8,I8],[1,2,3,4,5,6,7,8,9]),
permutation([A9,B9,C9,D9,E9,F9,G9,H9,I9],[1,2,3,4,5,6,7,8,9]),
%each individual box will be a permutation of 9 different numbers
permutation([A1,A2,A3,B1,B2,B3,C1,C2,C3],[1,2,3,4,5,6,7,8,9]),
permutation([A4,A5,A6,B4,B5,B6,C4,C5,C6],[1,2,3,4,5,6,7,8,9]),
permutation([A7,A8,A9,B7,B8,B9,C7,C8,C9],[1,2,3,4,5,6,7,8,9]),
permutation([D1,D2,D3,E1,E2,E3,F1,F2,F3],[1,2,3,4,5,6,7,8,9]),
permutation([D4,D5,D6,E4,E5,E6,F4,F5,F6],[1,2,3,4,5,6,7,8,9]),
permutation([D7,D8,D9,E7,E8,E9,F7,F8,F9],[1,2,3,4,5,6,7,8,9]),
permutation([G1,G2,G3,H1,H2,H3,I1,I2,I3],[1,2,3,4,5,6,7,8,9]),
permutation([G4,G5,G6,H4,H5,H6,I4,I5,I6],[1,2,3,4,5,6,7,8,9]),
permutation([G7,G8,G9,H7,H8,H9,I7,I8,I9],[1,2,3,4,5,6,7,8,9]).
the above is solve/2 5 ?- solve(X,Y). ERROR: toplevel: Undefined procedure: solve/2 (DWIM could not correct goal)
that happened when I tried with 2 normal variables
2 ?- solve(X,[,7,2,4,,_,,,1,,8,,7,,,3,2,,6,3,1,,_,,7,,_,,,_,5,2,,,1,4,,,5,9,,4,6,,_,8,4,,,3,7,,,_,,,9,,,_,2,5,3,,6,8,,_,5,,7,,2,,,_,,9,4,6,]). ERROR: toplevel: Undefined procedure: solve/2 (DWIM could not correct goal)
the same happened when the 2nd variable I input was a list with some fixed numbers
I honestly have no idea what I'm doing wrong and it's really getting frustrating trying to think of possible answers when nothing's working Can somebody tell me what I'm doing wrong?
Upvotes: 1
Views: 1119
Reputation: 60014
You probably meant
solve(X,Board):-
Board = X,
Board =
[A1,A2,A3,A4,A5,A6,A7,A8,A9,
B1,B2,B3,B4,B5,B6,B7,B8,B9,
C1,C2,C3,C4,C5,C6,C7,C8,C9,
D1,D2,D3,D4,D5,D6,D7,D8,D9,
...
but I think your code will be too slow to work...
Upvotes: 3
Reputation: 7209
Error says that solve/2
is not defined.
I can't see definition of solve/2
in the code you provided. Is it all the code you have?
solve/2
is not a special or built-in predicate, you have to define it if you call it.
Upvotes: 2