Вопросы по теме 'prolog-cut'
нужен совет по сокращению пролога?
в этой задаче у меня есть база данных Prolog, заполненная, например, край (1,0) край (2,0) край (1,3)
ребро означает, что две точки соединены.
Меня просят написать функцию под названием «достичь (i, j, k)», где i - начальная точка, j - конечная...
327 просмотров
schedule
28.07.2023
Переполнение рекурсии Пролога
fact(1,1):-!.
fact(N,F):-
N1=N-1,
fact(N1,F1),
F=F1*N.
Это приводит к переполнению стека (не сайту)! Это не должно из-за разреза (!). Работает ли это в SWI-Prolog?
226 просмотров
schedule
17.05.2023
Что такое SLD-дерево для этого запроса?
Рассмотрим следующую программу на Прологе (из "Искусство Пролога"):
natural_number(0).
natural_number(s(X)) :- natural_number(X).
plus(X, 0, X) :- natural_number(X).
plus(X, s(Y), s(Z)) :- plus(X, Y, Z).
и запрос:
?- plus(s(s(s(0))),...
2651 просмотров
schedule
17.10.2022
Удаление повторяющихся решений
Мой код объединяет два списка списков, элемент за элементом, следующим образом:
mergeL([[a,b],[c,d]], [[1,2],[3,4]], Result). Result = [[a,b,1,2],[c,d,3,4]]
И это код, который я использую:
mergeL([],[],[]).
mergeL(List, [], List)....
769 просмотров
schedule
05.03.2022
Пролог - понимание использования сокращения
Я не могу четко понять использование сокращения. Например, в этом случае: сглаживание , действительно ли это нужно? У меня это работает даже без обоих предикатов cut (я пробовал удалить). В каких случаях может происходить возврат к разрезу?...
362 просмотров
schedule
18.11.2022
Читаем отрывок! в Прологе
Я читаю Изучите Пролог прямо сейчас! глава о сокращениях и в то же время Программирование на языке Prolog для искусственного интеллекта Братко, глава 5: Управление обратным отслеживанием. Сначала казалось, что сокращение - это простой способ...
2679 просмотров
schedule
20.07.2023
Как предотвратить рекурсию после зацикливания один раз
Я только что понял, что это глупый вопрос. Любопытно, может ли кто-нибудь еще найти лазейку.
Исходный код:
married(trump,obama).
married(trump,goat).
married(pepee,pepper).
married(X,Y) :- married(Y,X),!. % not awesome because of infinite...
77 просмотров
schedule
19.04.2023
Какая разница в исполнении, если вырез '!' настоящее?
counter([],[]).
counter([H|T],[[H,C1]|R]) :- counter(T,[[H,C]|R]),!, C1 is C+1.
counter([H|T],[[H,1]|R]) :- counter(T,R).
Каков эффект "!" поскольку я получаю один и тот же вывод для ввода как в приведенном выше, так и в приведенном ниже коде?...
346 просмотров
schedule
13.09.2022
! / 0 должен прорезать (\ +) / 1 или нет?
С одной стороны:
$ sicstus
SICStus 4.6.0 (x86_64-linux-glibc2.17): Mon Apr 6 09:23:37 PDT 2020
[...]
| ?- \+ (!,false) ; X = 1.
yes
... с другой стороны ...
$ gprolog
GNU Prolog 1.4.5 (64 bits)
[...]
| ?- \+ (!,false) ; X = 1.
true ? ;
X...
53 просмотров
schedule
24.01.2023
Вырезать в начале предложения
Рассмотрим предикат Prolog p(integer),q(integer),r(integer) с потоковой моделью (o) и предикатом s :
p(1). q(1). r(1).
p(2). q(2). r(2).
s:-!,p(X),q(Y),r(Z),write(X,Y,Z),nl.
Дайте результат следующей цели: s . Обоснуйте ответ....
61 просмотров
schedule
25.07.2022