Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Dengaar
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 6
1

Формировать список, в котором каждый элемент является подсписком уровня

19.11.2012, 21:10. Просмотров 869. Ответов 2
Метки нет (Все метки)

Очень нужна помощь в решении данных задач.
1)Разработать рекурсивный вариант программы в функциональном стиле для решения предложенной задачи.

Формировать список, в котором каждый элемент является подсписком уровня, соответствующего его месту в исходном списке >(name ‘(a w q e))
(a (w) ((q)) (((e))))

2)Разработать итерационный вариант программы в императивном стиле для решения предложенной задачи.

Формировать список, в котором каждый элемент является подсписком уровня, соответствующего его месту в исходном списке >(name ‘(a w q e))
(a (w) ((q)) (((e))))
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 21:10
Ответы с готовыми решениями:

Формировать список, в котором отсутствует каждый третий элемент исходного списка
Моя работает неправильно.Помогите найти ошибку.пользоваться можно только car cdr cons (defun...

На входе список и число N, создать новый список, в котором каждый элемент из исходного повторяется N раз
То есть function('(1 2 3 4), 2) -> '(11 22 33 44), помогите решить, заранее спасибо)

Проверить является ли список подсписком глубины N
Написать программу, возвращающую Т, если lst2 является подсписком lst1 глубины N. Элементами...

Дан список с произвольными элементами. Заменить каждый элемент на Т ,если элемент - список
Дан список с произвольными элементами. Заменить каждый элемент на Т ,если элемент - список. И на...

Написать функцию аргументов L1 и L2,возвращающую T, если L2 является подсписком L1.
Здравствуйте, для зачета в университете ну могу сделать 2 задачки. На clisp 1) Написать функцию...

2
Catstail
Модератор
24738 / 12542 / 2288
Регистрация: 12.02.2012
Сообщений: 20,393
19.11.2012, 23:05 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
;; Вспомогательная программа, которая делает из аргумента x
;; список n-го уровня
 
(defun mko (x n) (cond ((= n 0) x)
                       (t (list (mko x (- n 1)))))) 
 
==> mko
 
(mko 6 3)
 
==> (((6)))
 
;; Решение задачи
 
(defun task (x &optional (level 0))
  (cond ((null x) nil)
        (t (append (list (mko (car x) level)) (task (cdr x) (+ 1 level)))))) 
 
==> task
 
(task '(1 2 3 4))
 
==> (1 (2) ((3)) (((4))))
Пойдет?

А вот итерационное:

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun task-i (x)
  (let ((n 0) (r nil))
       (dolist (i x r)
         (setq r (append r (list (mko i n))))
         (setq n (+ 1 n))))) 
 
==> task-i
 
(task-i '(a b c d))
 
==> (a (b) ((c)) (((d))))
2
Dengaar
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 6
20.11.2012, 17:17  [ТС] 3
Большое спасибо!
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 17:17

Создать список, в котором каждый из элементов исходного списка повторяется n раз
Помогите пожалуйста

Является ли один список подсписком другого?
является ли один список, подсписком другого?

Определить является ли первый список подсписком второго
Доборого Вам времени суток! Долго бьюсь над решением казалось бы не трудной задачи. Если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru