Описание тега prolog-dif
NoneDif/2 - это встроенный в Пролог предикат, который выражает синтаксическое неравенство в звуковой форме.
2
ответа
Простой Пролог удалить из списка
(Это не вопрос курсовой работы. Просто мое личное обучение.) Я пытаюсь выполнить упражнение в Прологе, чтобы удалить элементы из списка. Вот мой код: deleteall([],X,[]). deleteall([H|T],X,Result) :- H==X, deleteall(T,X,Result). deleteall([H|T],X,[H|…
22 июн '11 в 14:25
1
ответ
Как выразить предикат allDifferent/6?
Позволять allDifferent(A, B, C, D, E, F) быть истинным тогда и только тогда, когда ∀i, j в {1, 2, 3, 4, 5, 6}, i-й и j-й аргументы объединяются тогда и только тогда, когда i = j. таким образом allDifferent(3, 1, 4, 1, 5, 9) ложно, но allDifferent(3,…
25 фев '17 в 14:38
1
ответ
Два разных пути от X до Y в графе
Я застрял со следующим вопросом Пролога: заданы ребра графа без циклов как факты. например: edge(a, b). edge(b, c). edge(c, d). edge(c, e). ... Я должен написать предикат, который проверяет, есть ли два разных пути между вершинами X и Y. Например, в…
22 янв '17 в 22:31
8
ответов
Другой /2 - существует ли чистое детерминированное определение?
different(Xs, Ys) :- member(X, Xs), non_member(X, Ys). different(Xs, Ys) :- member(Y, Ys), non_member(Y, Xs). Хотя это определение с использованием member/2 а также non_member/2 почти 1 идеален с декларативной точки зрения, он создает избыточные реш…
16 июн '15 в 09:32
3
ответа
Пролог - проверка количества случаев не работает должным образом
В Прологе: у меня есть следующая функция, которая подсчитывает вхождения определенного элемента в списке: %count(L:list,E:int,N:int) (i,i,o) count([],_,0). count([H|T],E,C):-H == E,count(T,E,C1),C is C1+1. count([_|T],E,C):-count(T,E,C). Я проверил …
19 ноя '15 в 12:49
3
ответа
Разделить список до точки в прологе
my_list([this,is,a,dog,.,are,tigers,wild,animals,?,the,boy,eats,mango,.]). Предположим, это список в прологе, который я хочу разделить на три части, то есть до трех полных остановок, и сохранить их в переменных. Как мне это сделать... counthowmany(_…
26 фев '14 в 03:11
2
ответа
Почему Пролог падает в этом простом примере?
likes(tom,jerry). likes(mary,john). likes(mary,mary). likes(tom,mouse). likes(jerry,jerry). likes(jerry,cheese). likes(mary,fruit). likes(john,book). likes(mary,book). likes(tom,john). likes(john,X):-likes(X,john), X\=john. Привет, выше приведен оче…
28 апр '12 в 03:06
2
ответа
Как предотвратить дублирование в сгенерированных последовательностях с помощью dif/2?
Этот вопрос возник при ответе на другой вопрос о Stackru при (обобщении), генерирующий все последовательности, сформированные из конечного набора элементов без повторяющихся вхождений. Как правильно заметил Борис в комментариях, существует множество…
06 дек '14 в 19:11
2
ответа
Удаление всех членов списка без объединения в прологе
Возможный дубликат: Пролог удалить: не удаляет все элементы, которые объединяются с элементом В Прологе, если вы напишите это: delete([(1,1),(1,2),(1,1),(3,4)],(1,_),L). результат будет: L = [ (1, 2), (3, 4)]. Что является нормальным, потому что пер…
11 ноя '11 в 22:18
5
ответов
Каковы предикаты сбоя в Прологе?
Я не могу придумать ситуацию, когда мне это нужно.
08 июн '10 в 22:35
1
ответ
Почему эта пролог-программа не компилируется?
У меня есть программа пролога. Эти строки мешают его компиляции: wins(A,B,C,D) :- convert(A,W), value(W,P), convert(B,X), value(X,Q), convert(C, Y), value(Y,R), convert(D,Z), value(Z,S), card(A), card(B), card(C), card(D), (P+Q)>(R+S), (P+Q)<2…
31 мар '11 в 19:57
2
ответа
Пролог Сравнить элементы списка
Когда дан некоторый список ввода, я хочу создать новый список, и он должен: Всегда добавляйте h перед новым списком Сравните каждые два последовательных элемента списка ввода и, если они равны, добавьте y к новому списку, если нет, добавьте x. Приме…
22 май '16 в 13:43
3
ответа
Охранные пункты в прологе?
Они существуют? Как они реализованы? Сопутствующие предикаты SWI-Пролог (freeze, when, dif и т. д.) имеют функциональность охранников. Как они вписываются в предпочтительный стиль программирования Prolog? Я очень плохо знаком с логическим программир…
07 дек '12 в 09:08
3
ответа
Пролог: проверка на наличие дубликатов в списке
Написать предикат allDistinct/1 чей параметр является списком (символов) и который успешно выполняется, если все символы в списке различны. notin(A,[]). notin(A,[B|C]) :- A\=B, notin(A,C). allDistinct([]). allDistinct([_]). allDistinct([A|B]) :- not…
08 мар '16 в 19:37
2
ответа
Пролог: оператор неравенства
Я использую SICStus Prolog и имею ряд фактов: student('John Henry', 'Maths'). student('Jim Henry', 'Maths'). student('John Alan', 'Maths'). student('Alan Smith', 'Computing'). student('Gary Henry', 'Maths'). Я хочу получить общий предмет для двух уч…
15 ноя '13 в 20:42
8
ответов
Как определить (и назвать) соответствующие предикаты сравнения безопасных терминов в ISO Prolog?
Стандартный порядок терминов (ISO/IEC 13211-1 7.2 Порядок терминов) определяется для всех терминов, включая переменные. Хотя для этого есть хорошее применение - подумайте о реализации setof/3, это делает многие иначе понятные и логичные использовани…
03 ноя '14 в 18:33
3
ответа
Странные результаты для манипулирования списком
Я пытаюсь реализовать некоторые предикаты для манипулирования списками в Прологе. Все работает как хотелось. Например append([],Ys,Ys). append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs). Пример запроса: ?- append([1,2,3],[4,5,6],X). X = [1,2,3,4,5,6]. % …
25 окт '14 в 08:44
6
ответов
Удалить ведущие нули в списке в Прологе
У меня есть список с неизвестным числом нулей в начале, например [0, 0, 0, 1, 2, 0, 3]. Мне нужно, чтобы этот список был очищен от ведущих нулей, чтобы он выглядел как [1, 2, 0, 3]. Вот что у меня есть: lead([Head | _], _) :- Head =\= 0. lead([0 | T…
30 сен '16 в 19:50
1
ответ
Есть ли противоположность оператору "подстановочный знак", чтобы специально не найти указанные элементы в Прологе?
Мне было трудно сформулировать название для этого вопроса, поэтому я постараюсь объяснить свою проблему как можно лучше здесь. В Прологе вы можете использовать оператор _ в предикате для получения всех определений, независимо от того, что там сущест…
26 фев '15 в 19:57
2
ответа
Почему мы используем '!' в прологе
Это код, который я пытаюсь понять. co(X) :- co(X,[],L). co([],A,A):- write(A). co([X|Xs], A, L) :- p(X-Z,A,R), !, Z1 is Z+1, co(Xs, [X-Z1|R], L). co([X|Xs], A, L) :- co(Xs, [X-1|A], L). p(X-Y,[X-Y|R],R):- !. p(X,[H|Y], [H|Z]) :- p(X,Y,Z). Какая поль…
14 ноя '14 в 10:15