Вопросы по теме '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 просмотров
schedule
17.09.2022
Предотвращение возврата после первого решения пары Фибоначчи
Термин 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 просмотров
schedule
22.05.2023
Пролог - викторина N-Queens - бесконечный цикл
Речь идет о проблеме 8 королев . Я пытаюсь решить более общую проблему N-Queens.
Цель состоит в том, чтобы это правило показало мне все возможные ответы. Например:
solution(Sol,4).
X = [2, 4, 1, 3] ;
X = [3, 1, 4, 2] ;
false.
Мне...
224 просмотров
schedule
17.07.2022
Проблема с бесконечным циклом 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 просмотров
schedule
14.07.2022
Как узнать, является ли число кратным другому
Глядя на код ниже:
multiple(X,0).
multiple(X,Y) :- lt(0,X), lt(0,Y), diff(Y,X,D), multiple(X,D).
Бывает, что-то не так. Для справки: lt/2 определяет, меньше ли первый аргумент второго. diff/3 определяет, равен ли третий аргумент первому...
90 просмотров
schedule
14.05.2023