Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слияние списков, Лишить список сложности 
V
    Опции темы
brianosally
Дата 23.12.2010, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Artemios @ 21.11.2006,  02:12)
Из Братко:
Код

конк( [ ], L, L ).        % конкатенация списков
конк( [X | L1], L2, [X | L3]) :- конк( L1, L2, L3).

линеаризация( [Голова | Хвост], ЛинейныйСписок ) :-      % Линеаризация непустого списка
     линеаризация( Голова, ЛинейнаяГолова ),
     линеаризация( Хвост, ЛинейныйХвост ),
     конк( ЛинейнаяГолова, ЛинейныйХвост,  ЛинейныйСписок ).
линеаризация( [ ], [ ] ).        % Линеаризация пустого списка
линеаризация( X, [X] ).       % Линеаризация объекта, не являющегося списком 


Добавлено @ 02:15 
Цитата(maxim1000 @  20.11.2006,  18:25 Найти цитируемый пост)
Joiner

Если я не ошибаюсь, в Прологе с большой буквы только переменные...

%линеаризация(уничтожение многоуровневости списка к пр. [a,[b,[c]]] --> [a,b,c])

lineariz([H|L],L1):-lineariz(H,LS),lineariz(L,LS2),union_lists(LS,LS2, L1).
lineariz([],[]).
lineariz(H,[H]).

[a,[b,[c]]] --> [a,b,c]
[a,[b,[c]]] --> [a,b,c,[]]
[a,[b,[c]]] --> [a,b,c,[],[]]
[a,[b,[c]]] --> [a,b,c[],[],[]]
...........................................
[a,[b,[c]]] --> [a,b,[c]] и т. д.


Но если добавить ! в выражение, то обратный ход отсечется, как и куча лишних вариантов:

%линеаризация(уничтожение многоуровневости списка к пр. [a,[b,[c]]] --> [a,b,c])

lineariz([H|L],L1):-lineariz(H,LS),lineariz(L,LS2),!,union_lists(LS,LS 2,L1).
lineariz([],[]).
lineariz(H,[H]).


результат :
[a,[b,[c]]] --> [a,b,c]

%второй вариант у меня так и не заработал, но может кто усовершенствует:
%lineariz([[H|L]|H1],L2):-lineariz([H|[L|H1]],L2).
%lineariz([H|[L|H1],[H|L2]):-lineariz([L|H1],[H|L2]).
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

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

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


 




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


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

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