С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 13
1

Рекурсивные преобразования списков. Common Lisp

19.12.2013, 02:51. Показов 997. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Используя приёмы рекурсии, выполнить такое преобразование.

Исходный многоуровневый любой список, вида

(a b (( c d e ) f g ( h i )) j k )

Образовать результирующий список вида

((a b) ( c d ) ( e f ) ( g h ) ( i g )) //перегруппировать элементы в подсписке по два до последнего парного.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
19.12.2013, 02:51
Ответы с готовыми решениями:

Рекурсивные преобразования списков. Common Lisp
Используя приёмы рекурсии, выполнить такое преобразование. Исходный одноуровневый любой список,...

Рекурсивные преобразования списков
Нужна помощь неполучается выполнить. Используя приёмы рекурсии в Лиспе, выполнить следущие...

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и...

Common lisp
кто поможет решить эти задачи? Перечитайте правила форума. Один вопрос - одна тема. Заголовок...

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37416 / 20788 / 4278
Регистрация: 12.02.2012
Сообщений: 34,199
Записей в блоге: 14
19.12.2013, 13:38 2
Сначала превращаем список в линейный:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun mk-lin (lst)
  (cond ((null lst) nil)
        ((atom (car lst)) (cons (car lst) (mk-lin (cdr lst))))
        (t (append (mk-lin (car lst)) (mk-lin (cdr lst))))))
 
==> mk-lin
 
(mk-lin '(a b (( c d e ) f g ( h i )) j k ))
 
==> (a b c d e f g h i j k)
Потомо делаем объединение в пары:

Lisp
1
2
3
4
5
6
7
8
9
(defun mk-pair (lst)
  (cond ((null (cdr lst)) nil)
        (t (cons (list (car lst) (cadr lst)) (mk-pair (cddr lst))))))
 
==> mk-pair
 
(mk-pair '(1 2 3 4 5 6))
 
==> ((1 2) (3 4) (5 6))
теперь решение:

Lisp
1
2
3
4
5
6
7
8
(defun task (lst)
  (mk-pair (mk-lin lst)))
 
==> task
 
(task '(a b (( c d e ) f g ( h i )) j k))
 
==> ((a b) (c d) (e f) (g h) (i j))
0
19.12.2013, 13:38
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
19.12.2013, 13:38
Помогаю со студенческими работами здесь

Common lisp
Есть фрагмент программы: (defun game(x y) (cond (( < x y)(print "menshe")(setq y (read))) (( >...

Common Lisp
Подскажите пожалуйста, а может Common Lisp формировать списки из функций, и (если вдруг может) как?

Курсы ФП на Common Lisp
Курс функционального программирования стартует 27 февраля на бесплатном образовательном ресурсе...

ООП Common Lisp
Помогите пожалуйста! Реализовать класс: Программа (название, тип, сфера применения, язык...

Вопрос по common lisp
Подскажите пожалуйста как выполнить лисп-программу из txt или какого другого файла?

Common Lisp - Матрица
Помогите решить задачу! 1. Нужно написать функции генерации матрицы и ввода матрицы с клавиатуры...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru