写一个数独求解器的学校作业。我把问题分解为几个步骤。 “主要”功能的代码如下。至于每个单独的步骤,它们都可以工作,但是我想知道如何将列表中的未绑定变量与我计算的数字统一起来。然后,我希望在下一个电话中通过此列表。如果问题不完全清楚,请告诉我,我会详细说明。感谢
代码:
我知道下面的代码是错误的,因为我认为我只是传递了我原来的数独列表。数独列表是列表列表,例如
[[1,_,_,8,_,4,_,_,_],
[_,2,_,_,_,_,4,5,6],
[_,_,3,2,_,5,_,_,_],
[_,_,_,4,_,_,8,_,5],
[7,8,9,_,5,_,_,_,_],
[_,_,_,_,_,6,2,_,3],
[8,_,1,_,_,_,7,_,_],
[_,_,_,1,2,3,_,8,_],
[2,_,5,_,_,_,_,_,9]]
代码:
fill(List) :-
findVar(V,List,0,X,Y,Sub), % Find a variable to bind
difference([1,2,3,4,5,6,7,8,9],Sub,Choices), % Find numbers not yet in row
random(Choices,N), % Select random number from available numbers
V = N,
check(List,X,Y), % Check for correctness
fill(List).