Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Опять пролог! ОПЯТЬ СПИСКИ!
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Kate&Lena Kate&Lena вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.02.2009
Wink 25.02.2009, 17:43

Дан список [[a,b,c],[c,g,r],[r,h,a],[n,m]],
и необходимо получить [a,b,c,g,r,h,n,m] список, в котором каждый элементы первого списка не повторяется


Я написала тут кое-что, но дело в том что
1) просматривается только первый элемент каждого подсписка, а не все;
2) этот самый первый элемент проверяется на совпадение с элементами своего хвоста, а не с другими элементами других подсписков

Код:
domains
        i=integer
        s=i*
        s1=s*
predicates
        union(s1,s)
        member(i,s)

clauses
        member(X,[X|_]).
        member(X,[_|T]) :- member(X,T).

        union([],[]).
        union([[H|T]|T1],S):- member(H,T), !, union(T1,S).
        union([[H|T]|T1],[H|S]):- union(T1,S).
Вот что происходит:

Код:
Goal: union([[1,2,3],[2,3]],M)
M=[1,2]
1 Solution

Goal: union([[1,2,3],[1,3]],M)
M=[1,1]
1 Solution
Как все это исправить не хватает умственных способностей, поэтому- ПОМОГИТЕ!!

Спасибо
Ответить с цитированием
  (#2 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 25.02.2009, 19:38

Цитата:
Опять пролог! ОПЯТЬ СПИСКИ!
-- вот счастье-то подвалило!!!
Код:
DOMAINS   i=integer il=i*   ill=il*
PREDICATES   
union(ill,il)
insert(i,il,il)
CLAUSES
union([G|[]],G):-!.
union([G,[]|H],X):- !, union([G|H],X).
union([G,[Y|Z]|H],X):- insert(Y,G,Gn),!, union([Gn,Z|H],X).

insert(X,[],[X]):-!.
insert(X,[X|Y],[X|Y]):-!.
insert(X,[Y|H],[Y|R]):- !, insert(X,H,R).
Цитата:
Goal: union([[1,2,3],[3,4,5],[5,6,1]],X)
X=[1,2,3,4,5,6]
1 Solution
Ответить с цитированием
  (#3 (permalink)) Старый
Kate&Lena Kate&Lena вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.02.2009
По умолчанию 25.02.2009, 22:14

Главное, что мне нравится это счастье! Почти каждую неделю что-то новенькое. Мда....не ожидала, что мое решение совсем не правильное. Спасибо большое, теперь осталось только разобраться.
aag, а вы случайно нигде не преподаете Пролог?
Ответить с цитированием
  (#4 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 25.02.2009, 22:17

Цитата:
Главное, что мне нравится это счастье! Почти каждую неделю что-то новенькое.
-- чудненько!!!
Цитата:
Мда....не ожидала, что мое решение совсем не правильное.
-- почему не правильное?! может быть не самое рациональное (как и моё, впрочем), а "нерационально"<>"неправильно... а своё Вы до ума доведите..
Цитата:
aag, а вы случайно нигде не преподаете Пролог?
-- нет, я вообще простой российский безработный...
Ответить с цитированием
  (#5 (permalink)) Старый
Kate&amp;Lena Kate&amp;Lena вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.02.2009
По умолчанию 25.02.2009, 23:30

Цитата:
-- нет, я вообще простой российский безработный...
Не такой уж вы и простой, если ТАКОЕ умеете делать с прологом =)
Зато умный!

Еще раз спасибо!!! Пойду доводить все до ума
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 26.02.2009, 00:18

Цитата:
Не такой уж вы и простой
-- ну да, я беспросветный... без шансов...
Цитата:
если ТАКОЕ умеете делать с прологом
-- ТАКОГО Вы, судя по всему, ещё не видели (всё ещё впереди, надеюсь и желаю). А это всё так, "финтифлюшки"... я вот давеча пентамино отмутузил (турбой!!!) -- и то всё равно финтифлюшка....
Ответить с цитированием
  (#7 (permalink)) Старый
Kate&amp;Lena Kate&amp;Lena вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.02.2009
По умолчанию 26.02.2009, 00:28

Нам преподаватель сказал, что следующую лабу будем писать на любом языке, на каком захотим, потому что начнется искусственный интеллект...а до этого был просто легенький язычок Пролог! Так что, то ли еще будет =)
Ответить с цитированием
  (#8 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 26.02.2009, 00:30

ну, если
Цитата:
начнется искусственный интеллект
, то я в курсе, на каком языке Вы в конце концов писать будете...
Ответить с цитированием
  (#9 (permalink)) Старый
Kate&amp;Lena Kate&amp;Lena вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.02.2009
По умолчанию 26.02.2009, 00:54

Цитата:
я в курсе, на каком языке Вы в конце концов писать будете...
Вот с этого места поподробнее...а то у нас кроме Пролога еще и C++, и Java, и многое другое типа SQL..., но время тратим больше всего на Пролог, круглыми сутками сидим над ним. И себе пытаемся решить, и другим помочь.

У меня тут парa вопросиков назрело:
1) обьясните, пожалуйста, чем является G первом "unionе" -- union([G,[]|H],X):- !, union([G|H],X).
2) и что происходит здесь-- insert(X,[Y|H],[Y|R]):- !, insert(X,H,R).
Ответить с цитированием
  (#10 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 26.02.2009, 01:48

Цитата:
1) обьясните, пожалуйста, чем является G первом "unionе" -- union([G,[]|H],X):- !, union([G|H],X).
я попробую...Goal: union([[1,2,3],[3,4,5],[5,6,1]],X) G = (в самом начале)[1,2,3], и мы впихиваем в G следующий [3,4,5], H(соответственно)=[5,6,1](можно ещё списков надобовлять)... Когда весь [3,4,5] заинсертился и от него остался [], мы с ним прощаемся и начинаем инсертить в G (совсем уже не изначальное) то самое H...
Цитата:
2) и что происходит здесь-- insert(X,[Y|H],[Y|R]):- !, insert(X,H,R).
-- тыкаем X в список, но должны проверить, или он отличен от всех элементов списка, а от Y он уже отличен (а то бы завернул на предыдущей строчке). На выходе у нас последний аргумент предиката insert(X,[Y|H],[Y|R]), и в не зависимости от того, попадёт ли в выход X, Y там по зелёной должен быть... а дальше засовывается Х в H и получается R, который хвостик к Y... Можно ещё круче завертеть, но я уже так объяснить(даже себе) затрудняюсь.... "Вилька, Бутилька, Тарелька -- пишутся без мягкого знака.... Солъ, Молъ, Фасолъ -- с мягким знаком... Понять это невозможно... Это надо запомнить, а потом прочувствовать...)))
а, навтыкайте где интересно nl, write(что интересно), readchar(_), и смотрите, его оно Вам будет выписывать
Ответить с цитированием
  (#11 (permalink)) Старый
Kate&amp;Lena Kate&amp;Lena вне форума
Member
 
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.02.2009
По умолчанию 26.02.2009, 08:39

АААаааа!
Теперь все стало на свои места. Спасибо огромаднейшее!!!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
и опять я) Пердунчик Любые вопросы от новичков 20 07.12.2011 23:59
опять про кулер sanchoflat Охлаждение и разгон 5 23.10.2011 15:08
Опять видеокарта Clyde Barrow Любые вопросы от новичков 9 05.08.2011 08:24
Опять OpenVpn volfram Сетевое программирование 0 08.07.2011 00:28
опять GTA EFLC kukureku007 Софт и программы 4 06.01.2011 22:31
Опять списки. snarkbird Prolog 1 28.11.2010 14:45
Опять списки Chummy89 Prolog 17 27.11.2009 22:04
опять пятнашки король Prolog 6 28.05.2009 22:44
Опять звуковуха... outta Звук и акустические системы 4 22.11.2008 14:07
Опять списки, и опять на SWI. ler Prolog 3 02.02.2006 07:32
опять про UTF-8 EuG PHP 2 02.08.2005 17:50
Опять списки kronix Prolog 5 27.02.2005 09:21



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов