Здесь sudoku каждый X - это коробка в сумоку 6x6, которую мы даем тем, которые я пытаюсь установить в начале. Думал, что эта стратегия будет работать, но я не думаю: I «Задайте известные значения X, а затем сгенерируйте необходимые перестановки и протестируйте их на соответствие ограничениям проблем». нужна помощь! Я не знаю, почему это не сработает! Heres обновленная версия, по-прежнему не отвечающая истина или ложь от пролога. Просто прошу прочь, не сказав мне, что такое решение для судоку. Он также использует 98% моего процессора, пока он не отвечает, так что продолжайте рисовать. Может кто-нибудь мне помочь?Prolog Sudoku с перестановкой
sudoku(X1,X2,X3,X4,X5,X6,X7,X8,
X9,X10,X11,X12,X13,X14,X15,X16,X17,
X18,X19,X20,X21,X22,X23,X24,X25,X26,
X27,X28,X28,X30,X31,X32,X33,X34,X35,X36):-
X2=4,
X4=2,
X7=3,
X9=1,
X13=6,
X24=6,
X30=2,
X33=3,
X34=6,
X35=1,
permutation([X1,X3,X5,X6],[1,3,5,6]),
permutation([X8,X10,X11,X12],[2,4,5,6]),
permutation([X14,X15,X16,X17,X18],[1,2,3,4,5]),
permutation([X19,X20,X21,X22,X23],[1,2,3,4,5]),
permutation([X25,X26,X27,X28,X29],[1,3,4,5,6]),
permutation([X31,X32,X36],[2,4,5]),
permutation([X1,X19,X25,X31],[1,2,4,5]),
permutation([X8,X14,X20,X26,X32],[1,2,3,5,6]),
permutation([X3,X15,X21,X27],[2,4,5,6]),
permutation([X10,X16,X22,X28],[1,3,4,5]),
permutation([X5,X11,X17,X23,X29],[2,3,4,5,6]),
permutation([X6,X12,X18,X36],[1,3,4,5]),
permutation([X1,X3,X8],[2,5,6]),
permutation([X5,X6,X10,X11,X12],[1,3,4,5,6]),
permutation([X14,X15,X19,X20,X21],[1,2,3,4,5]),
permutation([X16,X17,X18,X22,X23],[1,2,3,4,5]),
permutation([X25,X26,X27,X31,X32],[1,2,4,5,6]),
permutation([X28,X29,X36],[3,4,5]).
'перестановка ([X1, X3, X4, X5, X6], [1,3,5,6]),' никогда не сможет преуспеть. И что вы подразумеваете под '(: =)/2'? – false
О, спасибо! Да, я решил, что мне нужно удалить X4, поскольку он уже определен внизу. каждый х представляет собой поле в судоку. не будет X2: = 4 установить x2 на 4, когда пользователь запрашивает как судоку (X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, Х19, Х20, Х21, Х22, Х23, Х24, Х25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36). теперь он не возвращает ложь, а просто ничего не возвращает. Я хочу, чтобы он возвращал значения для других полей, которые еще не определены. и что вы имеете в виду (: =)/2, где я написал это @false? –
Он ничего не возвращает, значит, он обрабатывает минуты? Использование моего процессора говорит, что он использует 99% CPU LOL. –