Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите решить задачу по работе со списками 
:(
    Опции темы
AlenaGlo
Дата 28.5.2012, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.5.2012

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



Ребята, добрый вечер всем. Извините что беспокою, но у меня висит задача одна, которая является ключем к получению зачета, а у меня ее никак не получается написать. Вот суть задачи:

Имеются 2 упорядоченных по возрастанию списка, один из которых является подсписком другого (например, [1,2,3,4,5,6,7] и [2,5,6]). Написать предикат, который удаляет из первого списка элементы второго)

Помогите пожалуйста...
PM MAIL   Вверх
Фантом
Дата 28.5.2012, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 6
Всего: 49



Цитата(AlenaGlo @  28.5.2012,  22:29 Найти цитируемый пост)
которая является ключем к получению зачета, а у меня ее никак не получается написать. 

Халявный у вас какой-то зачет... 

Держите:
Код

minus(L,[],L).
minus([H|T],[H|U],L):-minus(T,U,L).
minus([H|T],U,[H|L]):-minus(T,U,L).

PM   Вверх
AlenaGlo
Дата 28.5.2012, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.5.2012

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



Фантом, да нет, не всё так просто. Мне кажется, неспроста список именно по возрастанию. И вообще, его, наверное, нужно в диалоговом окне вводить?

PM MAIL   Вверх
Фантом
Дата 28.5.2012, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 6
Всего: 49



Цитата(AlenaGlo @  28.5.2012,  23:39 Найти цитируемый пост)
Мне кажется, неспроста список именно по возрастанию.

Естественно, иначе предложенный вариант бы не работал.

Цитата(AlenaGlo @  28.5.2012,  23:39 Найти цитируемый пост)
И вообще, его, наверное, нужно в диалоговом окне вводить?

Надо - введите.  smile 
PM   Вверх
AlenaGlo
Дата 28.5.2012, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.5.2012

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



Фантом, ну утёрли нос мне, конечно. 
но я и не спорю, в прологе полный ноль.
вот вбиваю эти три строчки в окошко - но ничего не работает, ошибку выдаёт.
 smile 
но зато я суп куриный вкусно готовлю, и пасту с шампиньонами.
PM MAIL   Вверх
Фантом
Дата 28.5.2012, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 6
Всего: 49



Цитата(AlenaGlo @  28.5.2012,  23:51 Найти цитируемый пост)

но я и не спорю, в прологе полный ноль.

Тогда о каком зачете может быть речь?

Цитата(AlenaGlo @  28.5.2012,  23:51 Найти цитируемый пост)

вот вбиваю эти три строчки в окошко - но ничего не работает, ошибку выдаёт.

По-видимому, Вы забыли уточнить реализацию Пролога, которой пользуетесь, а она не вполне стандартна.
PM   Вверх
AlenaGlo
Дата 28.5.2012, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.5.2012

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



Фантом, омг, а вы, наверное, все зачёты прям честно сдавали, и ни одной шпоры на экзаменах не использовали?
вот о таком зачёте, желанном мною очень.
а версия 5.2, я так думаю.
PM MAIL   Вверх
Фантом
Дата 28.5.2012, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 6
Всего: 49



Ясно. Язык совершенно не знаем, разницы между компилятором и языком не видим... стало быть, зачет явно будет лишним.
PM   Вверх
AlenaGlo
Дата 28.5.2012, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.5.2012

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



Фантом, ну Вы тиран просто. Не повезло же Вашей девушке.  smile 
PM MAIL   Вверх
rrrFer
Дата 30.5.2012, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Правило minus Фантома правильное (хотя, какое-то жосткое, ИМХО), если используете VIP 5.2 - надо добавить разделы domains, predicates, clauses, goal.
Я думаю что если есть желание - разберетесь.  Поищите в гугле "обработка списков пролог" щелкните по одной из первых ссылок и прочитайте, или примеры посмотрите, понять можно.

Цитата(Фантом @  28.5.2012,  22:46 Найти цитируемый пост)
Цитата

Мне кажется, неспроста список именно по возрастанию.

Естественно, иначе предложенный вариант бы не работал.

Предложенный вариант будет работать, но есть в задании сказано, что список упорядочен - то, возможно, это надо использовать. 
Код

domains
    list=real*
predicates
    minus( list, list, list )
    member( list, real )
clauses
    member( [H|_], H ):-!.
    member( [HH |T], E ):-
        HH < E, member( T, E ).

    minus( [], _, [] ).
    minus( [H|T], L, LL ):-
        member( L, H ), !, minus( T, L, LL ).
    minus( [H|T], L, [H|LL] ):-
        minus( T, L, LL ).
        
goal
    L1 = [1,2,3,4,5,6,7], L2 = [ 2,5,6],
    minus( L1, L2, Result ),
    write( L1, "\n", L2, "\n", Result ), nl.

тут предикат member использует упорядоченность списка, в нем можно убрать условие "HH < E", тогда будет работать и для неупорядоченных списков )
PM MAIL WWW ICQ   Вверх
Фантом
Дата 30.5.2012, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 6
Всего: 49



Цитата(rrrFer @  30.5.2012,  09:21 Найти цитируемый пост)

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

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

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

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


 




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


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

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