Упражнение из SICP: Написать процедуру fringe, принимающую в качестве аргумента дерево (представленное в виде списка) и возвращает список, элементы которого - все листья дерева, упорядоченные слева направо. Пример: (define x (list (list 1 2) (list 3 4))) (fringe x) (1 2 3 4) (fringe (list x x)) (1 2 3 4 1 2 3 4) Моё решение таково: (define (listed x) (if (pair? x) x (cons x #f))) (define (listed-all x) (map listed x)) ;;делает все эл-ты списка х списками (define (merge x) (if (null? x) #f (append (car x) (merge (cdr x))))) ;;объединяет все эл-ты списка в 1 список (define (tree? x) (cond ((null? x) #f) ((pair? (car x)) #t) (else (tree? (cdr x))))) ;;проверка на дерево (define (fringe x) (if (not (tree? x)) x (fringe (merge (listed-all x))))) На каждом шаге короткие ветки дерева "удлиняются" до вел-ны самых длинных, а потом из них "собирается букетик" append-ом. Но что-то мне подсказывает, что этот вариант решения через одно место и слишком громоздкий. Как сделать короче?

Ответ на:
комментарий
от yyk

Ответ на:
комментарий
от seiken

Ответ на:
комментарий
от yyk

Ответ на:
комментарий
от seiken

Ответ на:
комментарий
от grob

Ответ на:
комментарий
от grob

Ответ на:
комментарий
от yyk

Ответ на:
комментарий
от grob

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Почему в scheme не любят set! ? (2014)
- Форум Racket Scheme. Рекурсивное деление полиномов с остатков (через списки) (2020)
- Форум Ещё одно упражнение (SICP) (2006)
- Форум Поиск выхода из лабиринта.Программа на ЛИСПе (2008)
- Форум GIMP - Scheme (Script-Fu) - Cохранение слоев в png (2017)
- Форум Необязательные параметры функции в Scheme (2014)
- Форум [лисп?] Festival text2wave. Как оно работает? (2009)
- Форум [xkcd] sex haskell rock 'n roll (2009)
- Форум Выясняем с помощью Emacs, какой ЯП лучше (2024)
- Форум [common lisp][ищу морфизм] ещё одна годная задачка про списки (2010)