数独ソルバーを書くための学校の課題。問題をいくつかのステップに分解しました。「メイン」関数のコードは次のとおりです。個々のステップのそれぞれについては機能しますが、リスト内のバインドされていない変数を計算した数とどのように統合するのか疑問に思っています。次に、このリストを次の呼び出しで使用するために渡します。質問が完全に明確でない場合は、教えてください。詳しく説明します。ありがとう
コード:
元の数独リストを渡しているだけだと思うので、以下のコードが間違っていることはわかっています。数独リストはリストのリストです。
[[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).