私のコードは以下の通りですが、このコードは数独解決のためのコードですが、行と列のdiv2チェックの最初の実行はrawがすべて異なる場合、div2の2回目の実行を転置した後列はすべて異なっています。Prolog無限ループ
:- use_module(library(clpfd)).
len(P):-
div2(P),
write("\n 1P2: "),
write(P),
transpose(P,X),
div2(X),
write("\n 1X: "),
write(X).
div2([H|T]) :-
H ins 1..9,
all_distinct(H),
label(H),
div2(T).
div2([]).
なぜ無限ループに詰まっていますか?この例でテストするとき、それはX.
len([
[_,_,_,_,_,4,3,_,7],
[7,6,_,1,5,_,_,_,9],
[_,5,_,_,_,_,_,_,_],
[6,_,5,_,_,8,7,_,_],
[9,_,_,_,_,_,_,_,4],
[_,_,3,2,_,_,1,_,5],
[_,_,_,_,_,_,_,6,_],
[5,_,_,_,3,1,_,2,8],
[1,_,9,4,_,_,_,_,_]]).
もしあなたがこのコードで何をしたいのか説明したら、どこが間違っているのかを説明できる人がいるかもしれません。 –
私は編集しました。私はそれが十分に説明され、リプレイのためにありがとうと思います。 – HolyParadox