Вопросы по теме 'prolog-dif'

Упрощенный коммивояжер на Прологе
Я просмотрел похожие вопросы, но не могу найти ничего, что имело бы отношение к моей проблеме. Я изо всех сил пытаюсь найти алгоритм или набор «циклов», которые найдут путь от CityA до CityB , используя базу данных...
7944 просмотров

Почему в этом простом примере происходит сбой Пролога?
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. Привет! Выше...
952 просмотров
schedule 20.07.2023

Реификация термина равенство / неравенство
Программы на чистом Prolog, которые четко различают равенство и неравенство терминов, страдают от неэффективности выполнения; даже когда все относящиеся к делу термины заземлены. Недавний пример SO - это этот ответ . Все ответы и все ошибки...
1451 просмотров
schedule 19.05.2022

Заставить Prolog выбирать уникальные значения переменных
Хорошо, я новичок в Prolog, так что извините, если это что-то тривиальное, но я не могу найти правильный элегантный ответ на этот вопрос. Я пытаюсь выполнить это упражнение здесь, на learnprolognow.org , упражнение 2.4 (кроссворд). В упражнении...
3278 просмотров
schedule 20.05.2022

Удаление элемента из списка
Я знаю, что этот вопрос уже задавался, но я просто хочу спросить о моей конкретной реализации. Я пишу эту функцию, чтобы попрактиковаться в Прологе и лучше понять Пролог. Вот что у меня есть: del(Ele, [H], [H]) :- Ele \= H. del(Ele, [H|T],...
300 просмотров
schedule 05.07.2023

Почему SWI-Prolog предлагает только одно решение?
Честно говоря, я новичок в Prolog, так что прошу прощения за мое незнание. У меня есть простой предикат для подсчета вхождений атома в список, а именно: count(L, B, C) :- L = [], C = 0, !; L = [H|T], H \= B, count(T, B, C), !; L =...
1739 просмотров
schedule 14.01.2024

Проблема с разделением Пролога на два списка
У меня есть задание на прологе. Мне нужно посмотреть на первый элемент в списке, посмотреть, совпадают ли его следующие элементы, пока они не совпадают, и разделить списки на первый элемент и его дубликаты. например, если бы мой список был...
244 просмотров
schedule 27.10.2022

Есть ли противоположность оператору подстановки, чтобы специально не находить указанные элементы в Прологе?
Мне было трудно придумать название для этого вопроса, поэтому я попытаюсь объяснить свою проблему как можно лучше здесь. В Прологе вы можете использовать оператор _ в предикате, чтобы получить все определения независимо от того, что там существует,...
787 просмотров
schedule 31.07.2023

различный / 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 идеален с декларативной точки зрения, он...
927 просмотров
schedule 18.02.2022

Разделение списка в прологе по условию
у меня есть список [a,a,a,a,b,b] Моя цель состоит в том, чтобы разделить его на [[a,a,a,a],[b,b]] предикат, который я реализовал до сих пор split1([],[]). split1([A1|T],[[H1,H2]|B]):- A1=[H1,H2], H1=H2, split(T,B)....
618 просмотров
schedule 18.07.2023

Заполнить список только одним вхождением нескольких элементов списка
Я новичок в Прологе, и я пытаюсь его понять. Я начал с простой программы, которая должна: check if an element is contained in the rest of the list if FALSE do nothing если TRUE, добавьте его во второй список. (во второй список должно...
216 просмотров
schedule 07.02.2024

Проверьте, не превышает ли частота какого-либо элемента предел
Я хочу решить проблему, заключающуюся в том, что у меня есть список элементов Prolog. Если частота любого элемента больше N , возвращается false. Мои ожидания, как показано ниже. ?- frequency([1,2,2,2,5],3). true. ?-...
258 просмотров
schedule 27.05.2023

Prolog - Как ограничить длину списка переменных
У меня возникли проблемы с созданием всех списков, соответствующих определенным критериям. city(new_york, 47). city(chicago, 100). all_unique([]). all_unique([H|T]) :- H = [] ; (not(member(H, T)), all_unique(T)). cities([Head|Tail]) :-...
741 просмотров
schedule 01.10.2022

Как компактно выразить дизъюнкт неравенств без лишних ответов/решений
Рассмотрим, что я пробовал: dif_to_orto(A, B, C) :- ( dif(A, B) ; dif(A, C) ). Хотя это определение прекрасно с декларативной точки зрения, оно содержит много избыточности. Думать о: ?- dif_to_orto(A, B, C), A = 1, B = 2, C = 2....
390 просмотров
schedule 30.01.2024