![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 27.12.2012
Сообщений: 1
|
![]()
Нужно из списка х (a b c d e f) получить список у (((a b) c d) ((a b) c d)), используя всего одну дополнительную ячейку памяти.
Вот все что у меня получилось: (setq x '(a b c d e f)) (setq y (cddddr x)) (rplacd (cddr x) nil) (rplaca (cdr y) x) (rplaca y x) |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Код:
В меру своих знаний Lisp, предлагаю такой вариант действий: 1) Заменить nil на конце списка на указатель на c в списке x. 2) Заменить саму f на указатель на a. 3) Заменить саму e на указатель на (бывшую) f. 4) Присвоить y (бывшую) e. 5) А вот теперь разорвать связи: присвоить указателю из b nil, присвоить указателю из d nil. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
2 проги на лисп | Virus191288 | Фриланс | 5 | 12.04.2011 09:04 |
Рекурсия. Лисп | s2dentishe | Помощь студентам | 4 | 22.02.2011 19:50 |
Задача на структуроразрушающие функции. Лисп | s2dentishe | Помощь студентам | 2 | 20.02.2011 12:02 |
Задача на ЛИСП | Alexey123 | Помощь студентам | 2 | 24.12.2010 16:27 |
Лисп сопоставить | leest | Помощь студентам | 9 | 09.03.2010 23:13 |