мой код следующий, этот код является кодом для решения Sudoku, но только для строки и столбца первый запуск div2 проверяет, все ли исходные все разные, после переноса второго прогона div2 следует проверить, столбец все разные.Пролог бесконечной петли
:- 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