Вопросы по теме 'failure-slice'

DCG и левая рекурсия
Я пытаюсь реализовать dcg, который принимает набор строк формы {a,b,c,d}*. У меня есть проблема, если у меня есть запрос формы s([a,c,b], []), он возвращает true, что является правильным ответом, но когда у меня есть запрос в форме s([a,c,f],[]), он...
1427 просмотров
schedule 12.06.2023

Stackoverflow в арифметике Prolog Peano
Я пишу арифметику Пеано, чтобы лучше изучить Пролог. Ниже приведен код, который я придумал, и он кажется эквивалентным тому, что я видел в других местах в Интернете: add(X,z,X). add(X,s(Y),s(Z)) :- add(X,Y,Z). mult(_,z,z). mult(X,s(Y),W) :-...
2096 просмотров

Предотвращение возврата после первого решения пары Фибоначчи
Термин fib(N,F) верен, когда F является N числом Фибоначчи. У меня обычно работает следующий код Пролога: :-use_module(library(clpfd)). fib(0,0). fib(1,1). fib(N,F) :- N #> 1, N #=< F + 1, F #>= N - 1, F #> 0, N1...
1209 просмотров

Пролог - викторина N-Queens - бесконечный цикл
Речь идет о проблеме 8 королев . Я пытаюсь решить более общую проблему N-Queens. Цель состоит в том, чтобы это правило показало мне все возможные ответы. Например: solution(Sol,4). X = [2, 4, 1, 3] ; X = [3, 1, 4, 2] ; false. Мне...
224 просмотров

Проблема с бесконечным циклом Prolog
У меня есть следующие функции. Когда я вызываю его с помощью final_filter([(2, 2)], R) , он печатает много пар «2 2». Когда я комментирую get_all_sums(S, _) , он работает нормально, однако, если я тестирую отдельно get_all_sums(4, R) . У меня...
115 просмотров
schedule 03.05.2022

Обратный отсчет от числа с использованием Пролога
Тривиальный вопрос, но я хочу, чтобы программа возвращала список чисел, меньших или равных заданному числу. Например, CountD(4,L) . должен дать [4,3,2,1] . Это то, что у меня есть до сих пор: CountD(1,[]). CountD(Num,List):- [Num|List],...
712 просмотров
schedule 05.06.2022

Некоторые хорошие ответы по правилу, но не могу получить их все
Это мои правила, в которых заключается моя проблема: get_row([H|_],1,H):-!. get_row([_|T],I,X) :- I1 is I-1, get_row(T,I1,X). get_column([],_,[]). get_column([H|T], I, [R|X]):- get_row(H, I, R), get_column(T,I,X)....
85 просмотров

Как узнать, является ли число кратным другому
Глядя на код ниже: multiple(X,0). multiple(X,Y) :- lt(0,X), lt(0,Y), diff(Y,X,D), multiple(X,D). Бывает, что-то не так. Для справки: lt/2 определяет, меньше ли первый аргумент второго. diff/3 определяет, равен ли третий аргумент первому...
90 просмотров