Вопросы по теме 'logical-purity'

Устранение последовательных дубликатов
Устранение последовательных дубликатов элементов списка. Мое решение для этого: compress([X,X|Xs], Q) :- compress([X|Xs], Q). compress([X,Y|Xs], Q) :- X \= Y, compress([Y|Xs], QR), append([X], QR, Q). compress([X|[]], Q) :-...
386 просмотров
schedule 28.10.2021

Схема чистого пролога Quine
Вот эта бумага: Уильям Э. Берд, Эрик Холк, Дэниел П. Фридман, 2012 miniKanren, Прямая трансляция и без тегов Генерация Куайна с помощью реляционных интерпретаторов http://webyrd.net/quines/quines.pdf Которая использует логическое...
275 просмотров

Выразителен ли почти чистый Пролог?
@ false прокомментировал ранее : Да, вы можете реализовать машину Тьюринга без dif/2 . Но вы даже не можете реализовать пересечение или аналогичные предикаты. Предположим, мы расширяем чистый Пролог ( Horn FOL + CWA + UNA ) с...
536 просмотров

Использование \ == / 2 или dif / 2
Если я хочу убедиться, что две переменные не соответствуют одному и тому же термину, каков предпочтительный способ сделать это? Скажем, мне нужно найти ориентированные ребра в графе, а у узла не может быть ребра самому себе: node(a, x, y)....
2304 просмотров
schedule 25.07.2022

Сопрограммирование в Прологе: когда аргумент представляет собой список (имеет фиксированную длину)
Вопрос Можно ли запланировать выполнение цели, как только длина списка будет известна/фиксирована, или, как указано в комментариях @false, данный аргумент становится [правильным] списком? Что-то в этом роде: when(fixed_length(L), ... some...
207 просмотров

Избыточные ответы овеществленного варианта предиката append/3
Я хотел предложить логически чистое решение для некоторых другая недавняя проблема на этом форуме. Для начала я реализовал материализованный вариант append/3 и назвал его appendR/4 . Он основан на предикатах if_/3 и (=)/3 , реализованных...
120 просмотров
schedule 07.07.2023

Самый длинный общий префикс (LCP) списка строк
lcs([ H|L1],[ H|L2],[H|Lcs]) :- !, lcs(L1,L2,Lcs). lcs([H1|L1],[H2|L2],Lcs):- lcs( L1 ,[H2|L2],Lcs1), lcs([H1|L1], L2 ,Lcs2), longest(Lcs1,Lcs2,Lcs), !. lcs(_,_,[]). longest(L1,L2,Longest) :- length(L1,Length1),...
1674 просмотров

Как реализовать предикат not_all_equal/1
Как можно реализовать предикат not_all_equal/1 , который будет успешным, если данный список содержит как минимум 2 разных элемента, и потерпит неудачу в противном случае? Вот моя попытка (не очень чистая): not_all_equal(L) :- (...
169 просмотров

пролог не дает мне решения, когда оно существует
Я работаю над Семью языками за семь недель , но кое-что не понимаю в прологе. У меня есть следующая программа (на основе их программы Уоллеса и Громмита): /* teams.pl */ onTeam(a, aTeam). onTeam(b, aTeam). onTeam(b, superTeam). onTeam(c,...
783 просмотров
schedule 03.06.2024