Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
feradd

Выполнить преобразование дерева в список - пролог 5.2

05.02.2014, 16:09. Показов 1865. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан список, элементы которого — непустые бинарные деревья с числами в качестве вершин. Для каждого такого дерева выполнить преобразование дерева в спи-сок (в порядке обхода голова-левый-правый) и вывести результат в виде списка списков. Затем через пробел вывести максимальное значение среди всех элементов.
Например: если дано "[bt(2,no,bt(1,no,no)), bt(3,bt(5,no,no),bt(2,no,no))]", ответом будет "[[2,1],[3,5,2]] 5".
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
domains    
treetype = t(integer, treetype, treetype); nil    
treelist = treetype*    
il = integer*
ill = il*
predicates
determ max_s(ill, il)
/*determ treeToList(treetype,il) - (o,i)*/
determ do(treelist, ill)    preorder(treetype,il)    conc(il,il,il)     
max_ab(integer,integer,integer).
max(il,integer).
 
 
clauses
/*treeToList(nil,[]):-!.
treeToList(t(H,LT,RT),L):- treeToList(LT,ListLT), treeToList(RT,ListRT), conc([H],ListLT,Res1), conc(Res1,ListRT,L).
*/
do([],[]).
do([T|Ts],[L1|Ls]):-preorder(T,L1),/*change(L1,L),*/do(Ts,Ls).
preorder(nil,[]):-!.
preorder(t(Root,nil,nil),[Root]):-!.
preorder(t(Root,L,R), [Root|Ls]):-preorder(L,LL),preorder(R,LR),conc(LL,LR,Ls).
 
max_ab(A,B,A):-A>B,!.
max_ab(_,B,B).
 
max([A],A):-!.
max([H|Tail],Min):-max(Tail,M),max_ab(H,M,Min).
 
max_s([],[]).
max_s([T|Ts],[M1|Ms]):-max(T,M1),max_s(Ts,Ms).
 
conc([],Ys,Ys).
conc([X|Xs],Ys,[X|Zs]):-conc(Xs,Ys,Zs).
goal
do([t(2,nil,t(1,nil,nil)),t(3,t(5,nil,nil),t(2,nil,nil))], LIST).

не могу через пробел вывести максимальное значение среди всех элементов. помогите !
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2014, 16:09
Ответы с готовыми решениями:

Для каждого бинарного дерева выполнить преобразование дерева в список, результат вывести в виде списка списков
Объясните почему не работает, задание было таким " Дан список, элементы которого — непустые бинарные деревья с числами в качестве...

преобразование списка смежных вершин (мультисписок) в связный список узлов бинарного дерева
товарищи, помогите сообразить алгоритм, после праздников туго идет.. спасибо

Как можно выполнить преобразование списка с базовым типом в список с производным?
Поодиночке я делаю это с помощью такого конструктора: DerivedClass(BaseClass bc) {} Следовательно, выполнить приведение каждого...

1
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
08.02.2014, 22:00
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
domains    
treetype = t(integer, treetype, treetype); nil    
treelist = treetype*    
il = integer*
ill = il*
predicates
determ max_s(ill, integer)
/*determ treeToList(treetype,il) - (o,i)*/
determ do(treelist, ill)    preorder(treetype,il)    conc(il,il,il)     
max_ab(integer,integer,integer).
max(il,integer).
 
 
clauses
/*treeToList(nil,[]):-!.
treeToList(t(H,LT,RT),L):- treeToList(LT,ListLT), treeToList(RT,ListRT), conc([H],ListLT,Res1), conc(Res1,ListRT,L).
*/
do([],[]).
do([T|Ts],[L1|Ls]):-preorder(T,L1),/*change(L1,L),*/do(Ts,Ls).
preorder(nil,[]):-!.
preorder(t(Root,nil,nil),[Root]):-!.
preorder(t(Root,L,R), [Root|Ls]):-preorder(L,LL),preorder(R,LR),conc(LL,LR,Ls).
 
max_ab(A,B,A):-A>B,!.
max_ab(_,B,B).
 
max([A],A):-!.
max([H|Tail],Min):-max(Tail,M),max_ab(H,M,Min).
 
max_s([A],Max):-!,max(A,Max).
max_s([T|Ts],Max):-max(T,M1),max_s(Ts,Ms),max_ab(M1,Ms,Max).
 
conc([],Ys,Ys).
conc([X|Xs],Ys,[X|Zs]):-conc(Xs,Ys,Zs).
goal
do([t(2,nil,t(1,nil,nil)),t(3,t(5,nil,nil),t(2,nil,nil))], LIST),max_s(LIST,MAX).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2014, 22:00
Помогаю со студенческими работами здесь

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

Как сформировать список на языке Пролог?
Помогите пожалуйста!! Есть 2 задания: a) Определите отношение ПЕРЕВОД (Список1, Список2) для перевода списка чисел от 0 до 9 и...

Символическое дифференцирование-ввод формулы в связный список, преобразование в ПОЛИЗ, обратное преобразование
Прошу помогите мне. Символическое дифференцирование-ввод формулы в связный список, преобразование в ПОЛИЗ, обратное преобразование в...

Пролог-Ферзи-Выполнить задание, опираясь на программу ферзи
С помощью предиката ферзи - uazirler (queens) 3-х аргументов, найдите все правильные расстановки ферзей на шахматной доске размером, в...

Преобразование m-арного дерева в бинарное
Вообщем суть указана в названии топика. Преобразование нужно сделать по примеру. 1.В любом узле дерева отсекаются все ветви, кроме...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru