11 / 0 / 1
Регистрация: 28.04.2017
Сообщений: 44
1

Предикат p(U, V, L) - истинный, когда список L есть список из элементов списка U без элементов списка V (Visual Prolog)

06.01.2019, 18:05. Показов 2027. Ответов 1
Метки нет (Все метки)

Здравствуйте, помогите разобраться с моей реализацией
Видел уже решение данной задачи другим способом, но очень интересно понять почему мой код не работает
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
domains
 list = integer*
predicates
 p(list u, list v, list l)
 t(integer ot_u, list v)
clauses
 t(_, []):- !.
 t(X, [X|_]):- !, fail. 
 t(X,[_|T]):- t(X,T). % истина если X нет в списке
 
 p([],[],[]):- !.
 p(X, [], X):- !.
 p(X, X, []):- !.
 p([H|U], V, [H|L]):- t(H, V), p(U,V,L). % если H нет в списке V, то заносим H в список L
 p([_|U], V, L):- p(U,V,L). % если H есть в списке V, то идём дальше по списку U
 
goal
 p([1,2,3,4,5,6,7,8],[2,4,6,8],R). % по идее, должен выводить R=[1,3,5,7], но почему-то выводит No Solution
Заранее благодарен за помощь
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2019, 18:05
Ответы с готовыми решениями:

предикат истинный, если Y – список элементов X на нечётных местах, а Z – на чётных
помогите, пожалуйста!! не могу справиться с задачкой: нужно определить предикат предикат...

Предикат, который формирует список из номеров максимальных элементов числового списка
помогите пжлст. знаю только что в теории мы будет проходит сначала по списку и находит самый...

Написать предикат, который формирует список из наиболее часто встречающихся элементов списка
помогите пожалуйста! Написать предикат, который формирует список из наиболее часто встречающихся...

Написать предикат, который формирует список из наиболее часто встречающихся элементов списка
необходимо реализовать данную задачу, вот как бы нашлось такое : len(,0). len(,N) :-...

1
Фрилансер
3703 / 2075 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
07.01.2019, 08:31 2
Лучший ответ Сообщение было отмечено whxz0r как решение

Решение

Цитата Сообщение от whxz0r Посмотреть сообщение
очень интересно понять почему мой код не работает
Потому что выход из рекурсии должен происходить в ситуации, когда первый список пустой, а второй - нет.
Ни одно из Ваших правил выхода эту ситуацию не обрабатывает.

PS. Кнопочка с жуком на панели инструментов - это запуск отладчика. Неплохой отладчик, сразу увидели бы всё сами..
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2019, 08:31
Помогаю со студенческими работами здесь

Предикат: перевод списка цифр от 0 до 9 в список соответствующих им римских чисел (Turbo Prolog)
Не знаю,как это написать. Помогите,пожалуйста,создать предикат,переводящий список цифр от 0 до 9 в...

Определите предикат p(+U, +V, ?L) - истинный тогда и только тогда, когда L - список всех элементов, содержащихся либо в списке U, либо в списке V.
Здравствуйте, помогите пожалуйста решить задачу. Заранее благодарна) Определите предикат p(+U,...

Предикат range(?M, ?N, ?L), истинный тогда и только тогда, когда L - список целых чисел
Доброго времени суток. Помогите, пожалуйста со следующей задачей: Напишите предикат range(?M,...

программа которая берет список и создает список другой из этого же списка + тот же список без последнего элемента
надо написать программу которая берет список и создает список другой из этого же списка + тот же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru