Вопросы по теме '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 просмотров
schedule
18.02.2022
Выразителен ли почти чистый Пролог?
@ false прокомментировал ранее :
Да, вы можете реализовать машину Тьюринга без dif/2 . Но вы даже не можете реализовать пересечение или аналогичные предикаты.
Предположим, мы расширяем чистый Пролог ( Horn FOL + CWA + UNA ) с...
536 просмотров
schedule
17.03.2022
Использование \ == / 2 или dif / 2
Если я хочу убедиться, что две переменные не соответствуют одному и тому же термину, каков предпочтительный способ сделать это?
Скажем, мне нужно найти ориентированные ребра в графе, а у узла не может быть ребра самому себе:
node(a, x, y)....
2304 просмотров
schedule
25.07.2022
Сопрограммирование в Прологе: когда аргумент представляет собой список (имеет фиксированную длину)
Вопрос
Можно ли запланировать выполнение цели, как только длина списка будет известна/фиксирована, или, как указано в комментариях @false, данный аргумент становится [правильным] списком? Что-то в этом роде:
when(fixed_length(L), ... some...
207 просмотров
schedule
26.09.2022
Избыточные ответы овеществленного варианта предиката 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 просмотров
schedule
10.02.2023
Как реализовать предикат not_all_equal/1
Как можно реализовать предикат not_all_equal/1 , который будет успешным, если данный список содержит как минимум 2 разных элемента, и потерпит неудачу в противном случае?
Вот моя попытка (не очень чистая):
not_all_equal(L) :-
(...
169 просмотров
schedule
12.06.2023
пролог не дает мне решения, когда оно существует
Я работаю над Семью языками за семь недель , но кое-что не понимаю в прологе. У меня есть следующая программа (на основе их программы Уоллеса и Громмита):
/* teams.pl */
onTeam(a, aTeam).
onTeam(b, aTeam).
onTeam(b, superTeam).
onTeam(c,...
783 просмотров
schedule
03.06.2024