これが私の数独プロジェクトのリストです。次のようなリストがあります。
L = [_G1-0:0:0,_G19-0:6:2,_G22-0:7:2,_G25-0:8:2].
そして、これをフィルタリングして、自由変数のみを取得したいと思います。
[_G1, _G19, _G22 and _G25].
それが欲しいので、私はこの述語を書きました:
remove_position([], []) :- !.
remove_position([X-_|Xs], [X|Rs]) :- remove_position(Xs, Rs).
電話するとき
?- remove_position(L, Result).
SWI-Prologの回答
false.
だから私は述語を少し編集しました:
remove_position([], []) :- !.
remove_position([X-_:_:_|Xs], [X|Rs]) :- remove_position(Xs, Rs).
そして今、それは期待通りに動作します:
?- remove_position(L, Result).
Result = [_G1, _G19, _G22, _G25].
それでも、最初のものの何が問題なのかわかりません。私にとって、SWI-Prologは0:0:0と_、および_:_:_と一致する必要があります。わからないものはありますか?それともSWI-Prologのバグですか?
悟りをありがとう!