Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсия в Турбо Прологе, Работа со списками 
V
    Опции темы
DrWeb
Дата 8.12.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 25.11.2007
Где: Украина, Донецк

Репутация: нет
Всего: 1



Моя задачка: Создать отношение которое формирует список L2 из списка L1,исключая повторяющиеся элементы. Использовать предикат принадлежности списку. Вот мой код на Turbo Prolog 2.0:
Код

domains 
    l=integer*
    number=integer    
predicates
    copy(l,l)
    find_it(number,l)    
clauses    
    find_it(Head,[Head|_]).      
    find_it(Head,[_|Tail]):-find_it(Head,Tail).
    copy([],[]).
    copy([H|T],[N|L]):-find_it(H,T),copy(T,L).
    copy([H|T],[N|L]):-not(find_it(H,T)),N=H,copy(T,L).
goal
    L1=[1,2,1,3,1,4,2,5],copy(L1,L2),nl,write(L1),nl,write(L2).


L2 получается равен такому значению: [_,_,_,3,1,4,2,5]. Какой предикат добавить,чтобы L2 был равен [3,1,4,2,5] ,то есть без элементов '_' ?
Помогите плиз
PM MAIL WWW   Вверх
DrWeb
Дата 9.12.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 25.11.2007
Где: Украина, Донецк

Репутация: нет
Всего: 1



Все-сам справился=)Если кому надо,то вот код:
Код

domains 
    l=integer*
    number=integer    
predicates
    copy(l,l)
    find_it(number,l)    
clauses    
    find_it(H,[H|_]).      
    find_it(H,[_|T]):-find_it(H,T).
    copy([],[]).
    copy([H|T],L):-find_it(H,T),copy(T,L).
    copy([H|T],[H|L]):-copy(T,L).
goal
    L1=[1,2,1,3,1,4,2,5],copy(L1,L2),nl,write(L1),nl,write(L2).

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.