Описание тега prolog
Не используйте этот тег как Пролог и Эпилог. Пролог - наиболее часто используемый язык логического программирования. Он поддерживает недетерминированное программирование посредством хронологического поиска с возвратом и сопоставления с образцом посредством унификации.
1
ответ
Пролог не имеет смысла
Я хотел бы знать, что именно это означает? pred(_):-fail. Я прочитал несколько статей, но не смог найти ничего похожего по синтаксису. РЕДАКТИРОВАТЬ: (более широкий контекст)pred3(A, B) :- pred(A), pred2(B). pred2 такой же как pred
28 фев '15 в 11:52
1
ответ
Общее правило пролога для поиска кузенов и т. д.
Вопрос в том, чтобы написать общее правило, чтобы найти любой уровень относительности! cousin(N,Child1,Child2). Так что это правда, если Child1 и Child2 Nth двоюродные братья. Таким образом, двоюродный брат 1(ребенок 1, ребенок 2) = двоюродный брат …
28 май '15 в 05:12
3
ответа
Добавление целых чисел в список
По какой-то причине это не работает. Я получаю: ОШИБКА: is/2: Аргументы не достаточно созданы 1 add_list([]). 2 add_list([H|T]):- 3 Sum2 is Sum1 + H, 4 add_list(T). Я пытаюсь добавить содержимое списка (содержащего только цифры).
11 окт '11 в 23:42
2
ответа
Пролог найти минимальное значение запроса
Если у меня есть факты в следующем формате: person(name,age). Как я могу написать запрос, чтобы найти самого молодого человека? Я пытался использовать рекурсию, но я продолжал застрять в бесконечных циклах. Так далеко от всего чтения, которое я сдел…
03 май '13 в 00:42
1
ответ
JSON получить пролог предикат
Я пытаюсь создать этот предикат в прологе: Предикат json_get/3 можно определить как: json_get(JSON_obj, Fields, Result). что верно, когда Result можно восстановить, следуя цепочке полей в Fields (список), начиная с JSON_obj, Поле, представленное N (…
08 янв '18 в 15:46
1
ответ
Как этот предикат Пролога может стать быстрее, чем экспоненциальный?
У меня есть предикат, который проверит, доступна ли комната в рамках данного расписания (состоящего из событий). Проверка, доступна ли комната и не занята ли другим событием, в настоящее время работает экспоненциально. Я хотел бы оптимизировать это.…
04 дек '15 в 20:26
1
ответ
Как проверить, получает ли список другой список в Прологе
Я хотел бы создать аргумент, который успешно выполняется, когда список переходит к другому списку. Например?-Proceed_list([1,2],[2]). Да или Истина (независимо от компилятора). Может кто-нибудь мне помочь?
13 янв '12 в 08:41
3
ответа
Пролог: сопоставление одной или нескольких анонимных переменных
[_, [ X, _ ],_] будет соответствовать списку, подобному [d, [X, a], s]. Есть ли способ сопоставить его с любым шаблоном, где есть одна или несколько анонимных переменных? то есть. [[X, a], s] и [[d,a],[p,z], [X,b]] будут совпадать? Я пытаюсь написат…
19 мар '12 в 22:18
4
ответа
Указатели поиска пути Пролог
Мне нужно проверить, является ли путь действительным, истинным или ложным. Это дано так: ?-path(a,b,[(a,c),(c,d),(d,b)]). true В части списка, как я могу получить доступ к a или c в (a,c)? Это как строка "(a,c)"? И вообще, как можно решить этот тип …
03 ноя '09 в 17:40
2
ответа
3 последовательных элемента в Прологе с использованием concat
Поэтому я работаю над этой проблемой, чтобы иметь 3 элемента X, которые должны быть последовательными в списке и использовать только concat. Вот что я пытался: threeConsecutive(X, L):- concat(X, X, L2), concat(L2, X, L). Это правильно? Если нет, не …
24 мар '16 в 05:03
2
ответа
Пролог: проверьте, имеют ли два списка одинаковые элементы
Я новичок в Прологе, и у меня возникают проблемы с проверкой, если два списка имеют абсолютно одинаковые элементы. Элементы могут быть в разных порядках. У меня есть этот код: myremove(X, [X|T], T). myremove(X, [H|T], [H|R]) :- myremove(X, T, R). sa…
28 окт '12 в 18:13
2
ответа
Пролог GNU - оператор Univ? Объяснение этого
Итак, унив оператор. Я не совсем понимаю это. Например это: foo(PredList,[H|_]) :- bar(PredList,H). foo(PredList,[_|T]) :- foo(PredList,T),!. bar([H|_],Item) :- G =.. [H,Item],G. bar([_|T],Item) :- bar(T,Item). Что это делает? Это выглядит, чтобы ув…
09 ноя '10 в 00:41
1
ответ
Сплющить в прологе - как то еще
Посмотрите на мою реализацию flatten: в общем, это работает. Единственная проблема для my_flatten([], F) - это дает F=[]; F=[[]] вместо F=[], my_flatten(L, X) :- my_flatten(L, X, []). %, reverse(F, X). my_flatten([], Acc, Acc). my_flatten([H|T], F, …
18 май '16 в 16:10
1
ответ
Пролог: создание вселенной Herbrand и базы Herbrand
У меня есть серьезные проблемы с пониманием концепции Пролога и соответствующей вселенной Гербранда, базы Гербранда и так далее. Например, если у меня есть программа Prolog: p(X,Y) :- q(X,Y), q(Y,X). s(a). s(b). s(c). q(a,b). q(b,a). q(a,c). Я имею …
07 ноя '15 в 22:05
1
ответ
Пролог: деление числа
Я хотел сделать предикат, который возвращает список делителей числа. Пример: 72 = 2*2*2*3*3. prdel(A,[],_):- A is 1. prdel(P,[D|L],D):- 0 is mod(P,D), P1 is P/D, prdel(P1,L,D). prdel(P,L,D):- D1 is D+1, prdel(P,L,D1). Это работает и возвращает прави…
20 ноя '14 в 18:44
2
ответа
Неопределенная процедура DWIM не может исправить цель в Прологе
Я действительно новичок в прологе и пробую несколько примеров. Я получаю ошибку ERROR: Undefined procedure: eats/2 (DWIM could not correct goal) когда я запускаю правило. Почему это показывает, если мое правило верно? Пожалуйста, смотрите правило ни…
12 авг '18 в 18:27
3
ответа
Определенная логическая программа
Цель состоит в том, чтобы реализовать предикат noDupl/2, Первым аргументом этого предиката является список для анализа, а вторым аргументом является список чисел, которые не являются дубликатами. Я не мог понять код ниже, и когда я скомпилировал его…
12 июл '15 в 13:17
1
ответ
"Если == ноль" эквивалент в Прологе
Я хочу смоделировать базу знаний, где я могу утверждать расходы на различные интернет-магазины как факты. Одно правило теперь должно быть в состоянии рассчитать сумму этих расходов. Подсказка в том, что у меня есть разные скидки на магазины. Мои фак…
13 ноя '18 в 19:02
1
ответ
treeMerge в swi-прологе
Я пытаюсь построить предикат treeMerge(A,B,C), который возвращает true, если C является результатом слияния двух деревьев A и B. Есть предложения о том, как я могу это реализовать? У меня есть грубая идея, я думаю о слиянии корня, потом первого пото…
04 дек '17 в 02:11
2
ответа
Пролог запрос, который проверяет список
Я довольно плохо знаком с прологом и, изучая его, наткнулся на проблему, которая у меня возникла. У меня есть несколько фактов в базе данных. Они есть: book(year(1937), title([of,mice,and,men]), rating_out_of_ten(9)). book(year(2008), title([the,hun…
24 мар '17 в 23:05