Описание тега logic-programming

Логическое программирование - это парадигма программирования, основанная на логике первого порядка.
3 ответа

Обсуждение программирования на основе абдуктивной логики и программирования набора ответов

Я хочу уточнить некоторые моменты, касающиеся программирования с использованием абдуктивной логики и программирования набора ответов. Я с одноклассниками создаю игру. В этой игре есть "герои" (особые нпс). У героев есть цели и поведение. (Все это ос…
1 ответ

Два разных пути от X до Y в графе

Я застрял со следующим вопросом Пролога: заданы ребра графа без циклов как факты. например: edge(a, b). edge(b, c). edge(c, d). edge(c, e). ... Я должен написать предикат, который проверяет, есть ли два разных пути между вершинами X и Y. Например, в…
22 янв '17 в 22:31
4 ответа

Система типов и логическое программирование на Haskell - как портировать программы Prolog на уровень типов

Я пытаюсь понять связь между языком логического программирования (Пролог в моем случае) и системой типов Хаскелла. Я знаю, что оба используют унификацию и переменные для поиска значений (или типов в системе типов Хаскелла) в зависимости от отношений…
16 дек '12 в 08:01
1 ответ

Существуют ли чисто декларативные языки программирования общего назначения?

Я исследовал декларативные языки, и кажется, что декларативный - это просто общий термин для логических и функциональных языков. Или я не прав? Существуют ли какие-либо декларативные языки программирования общего назначения, которые нельзя классифиц…
0 ответов

Сделать отображение матрицы пролога tkeclipse

Я новичок в прологе и хочу сгенерировать матрицу отображения из приведенного ниже кода пролога, как показано на рисунке. Изображение ниже генерируется из данного кода пролога с использованием tkEclipse (Eclipse для пролога) Ниже приведен код проблем…
3 ответа

Распространение состояния при бактрекинге в Прологе

Предположим, у меня есть простая программа на Прологе, которая ищет в определенном пространстве состояний: search(State, State) :- is_solution(State). search(State, Solution) :- generate(State, NewState), search(NewState, Solution). И я знаю, что: g…
20 май '12 в 22:32
2 ответа

Самый полезный и поучительный функционально-логический язык для изучения

Я был очень удивлен силой Пролога. Потребовалось некоторое время, чтобы разобраться, но мне показалось, что это был самый крутой декларативный язык. Вот почему недавно, после двух лет некоторого функционального программирования в Scala, я решил снов…
4 ответа

Многопоточность на... функциональных языках? (Пролог)

Когда мой друг начал учить Пролог в школе, я высмеивал его за то, что он выучил бесполезный язык. Однако он показал мне кое-что, чего я даже не знал; Я хочу знать, откуда эта техника. Техника такая: permutation(List) :- isAMember(X, List), deleteFir…
1 ответ

Пересечение в SWI-Пролог

Я новичок в Прологе, и у меня возникли проблемы с пониманием рекурсии. Я пытаюсь написать отношение, которое находит пересечение двух отсортированных списков без использования встроенного пересечения SWI. Я использовал трассировку, чтобы увидеть, чт…
23 ноя '13 в 20:51
1 ответ

Как сопоставить строку для заданного выражения reg в прологе?

Я пытаюсь сопоставить выражение, которое похоже на регулярное выражение в прологе для данной входной строки. match_function([_$]?[a-z]|[a-z][a-z_]*[a-z],"+ab_c"). false match_function([_$]?[A-Z]|[A-Z][A-Z_]*[A-Z],"+AB_C"). ... Любые указатели, как п…
28 ноя '16 в 05:20
1 ответ

pyDatalog: возможно ли определить несколько независимых сеансов регистрации данных?

Я работаю над кодом, который оценивает данные в базе данных, чтобы увидеть, соответствуют ли экземпляры в потоке входящих событий ряду протоколов. Идея состоит в том, чтобы использовать pyDatalog для этого. В идеале мы хотели бы иметь возможность оц…
20 авг '13 в 11:35
1 ответ

Синтезировать наименьшую карту, удовлетворяющую ограничениям Featurec в core.logic?

В core.logicЕсть ли способ перевести результаты программы, как (run 2 [q] (fresh [a] (featurec q {:foo a}) (membero a '(5)) (conde ((featurec q {:bar 2})) ((featurec q {:baz 2}))))) в наименьшие карты, которые удовлетворяют ограничения каждого решен…
1 ответ

Ограниченное логическое программирование с множествами в Прологе

Clpfd - это библиотека программирования ограничений для целых чисел в SWI Prolog. Есть ли подобная библиотека для наборов? Если нет, знаете ли вы какие-либо статьи, полезные для реализации такой библиотеки? Это вообще выполнимо? Я действительно ищу …
2 ответа

Пролог умножить все элементы списка

Я хочу определить предикат в Prolog, prod_list/2, который умножает каждый элемент списка. У меня проблема с пустым списком, желаю, чтобы продукт был нулевым, вместо этого я получаю false. Мой код prod_list([H], H). prod_list([H|T], Product) :- prod_…
29 ноя '15 в 07:12
1 ответ

Непонимание Разумного Схемера Глава 5 кадр 62

В настоящее время я изучаю miniKanren, изучая Разумный Схемер. И я застрял в упражнении в главе 5 кадра 62: (run* (x) (flatten_o (a) x))почему в выводе три списка? Заранее большое спасибо.
3 ответа

Помогите с пунктами пролога

emissionOf(alpha). emissionOf(beta). detected(proton), detected(electron) :- emissionOf(alpha), emissionOf(beta). Я сталкиваюсь с проблемой, что по какой-то (вероятно, очевидной) причине Пролог не принимает последнюю строку приведенного выше кода. П…
23 сен '10 в 17:45
10 ответов

Можете ли вы сделать логическое программирование в Scala?

Я где-то читал, что Pattern Matching, подобный тому, который поддерживается в Scala функцией совпадения / регистра, на самом деле был заимствован из языков логики, таких как Prolog. Можете ли вы использовать Scala для элегантного решения таких пробл…
1 ответ

Использование pyDatalog для хранилищ ограничений

Рассмотрим следующие правила: pyDatalog.create_atoms('X') pyDatalog.create_atoms('Y') pyDatalog.create_atoms('a') pyDatalog.create_atoms('b') b(X,1) <= (X<0) b(X,Y) <= (X==1) & (Y>0) a(X,Y) <= b(X,Y) & (X>0) И проблема нахо…
02 май '13 в 15:49
3 ответа

Как мне реализовать GNU Prolog nth(X,List,Item)?

Я пытаюсь использовать API, который в основном совместим с GNU Prolog. К сожалению, предикат GNU Prolog nth(X,List,Item) не существует. Как бы вы реализовали nth, используя предикаты ISO? Описание: nth(X,List,Item) оценивается как true, если X-й эле…
24 апр '11 в 22:08
1 ответ

Пролог комбинаторика

Есть ли способ сгенерировать все возможности, такие как 9 букв, которые будут разделены на 3 команды, например: 1-я команда: 2 буквы 2-я команда: 3 буквы 3-я команда: 4 буквы ? Пример: find([a, b, c, d, e, f, g, h, i], T1, T2, T3). T1 = [a, b] T2 = …
22 май '15 в 18:46