Edward Bamber
Edward Bamber

Reputation: 89

toplevel: Undefined procedure Prolog

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

Answers (2)

CapelliC
CapelliC

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

Sergii Dymchenko
Sergii Dymchenko

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

Related Questions