Бинарное дерево - Lisp (229879)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Прошу вас помочь с лабой по функциональному программированию! Задание[Lisp + Haskel]: Дано бинарное дерево, некоторые вершины которого помечены. Проверить, находятся ли последние на одном пути от корня к листу. Указания к заданию:
В практическом плане: - определить заданную функцию обработки списков через простые встроенные функции (типа car, cdr, cons,...) средствамии языка ЛИСП; - добиться работоспособности полученной функциональной программы. !!!!!!!!!!!!! - не использовать функции ввода-вывода и функции "фон-неймановского" стиля программирования (типа setq,prog); !!!!!!!!!!!!! В теоретическом плане: - интерпретировать ЛИСП-программу средствами теории примитивно-рекурсивных функций, для этого: -- дать рекурсивное определение исходных и выходных данных программы, используя металингвистические формулы (право-, леволинейные, КС грамматические правила, т.е формулы вида A->b;A->bB;A->Bb;A->BC..); -- дать определение требуемой функции через простейшие функции, с применением операторов суперпозиции, подстановки, примитивной рекурсии; -- например, требуется определить функцию f, вычисляющую число элементов заданного списка. Определим множество исходных данных L: L->_; (пустой список) L->Le; (e-элемент списка) Множество выходных данных - целые числа: Определим функцию f: f(_)=0 f(eL)=f(L)+1; Данному определению соответствует программа на ЛИСПе (defun f(l)(cond((null l)0)(T(+(f(cdr l))1)))) - сравнить программы (ХАСКЕЛЬ и ЛИСП) по критериям: -- пользовательские возможности; -- возможности модификации; -- объем текста программ; -- трудозатраты; -- соответствие стиля программирования и языка поставленной задаче -- и другие. - не использовать сложные встроенные функции, выполняющие специфические операции над структурами;
Не могу разобраться с этим предметом, а сессию надо закрывать. Lisp еще как-то осваиваю, Haskel даже не открывал еще.. Заранее благодарен! Прошу не ругать, честно стараюсь вникнуть, но видимо ошибся со специальностью((

Решение задачи: «Бинарное дерево»

textual
Листинг программы
Работа с деревьями через абстрактный тип данных, реализованный замыканиями:
(как Абельсон завещал - вот такие вот функциональные структуры данных)

Свертка дерева простой кустарной велосипедной функцией:
Все помеченные вершины на одном пути от корня к листу

Свертка дерева через страшный подсмотренный котоморфизм:
(котоморфизм стырен отсюда http://habrahabr.ru/post/57503/)
Все помеченные вершины на одном пути от корня к листу

Свертка дерева простой кустарной велосипедной функцией:
Есть помеченные вершины на разных путях от корня к листу

Свертка дерева через страшный подсмотренный котоморфизм:
(котоморфизм стырен отсюда http://habrahabr.ru/post/57503/)
Есть помеченные вершины на разных путях от корня к листу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5