Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование списка 
:(
    Опции темы
Railko
Дата 17.12.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.12.2012

Репутация: нет
Всего: нет



Здравствуйте. Есть задача, помогите пожалуйста ее решить. Заранее спасибо. 

Определить функцию, преобразующую список (a (b (с))) к виду(a b c).


PM MAIL   Вверх
_sg
Дата 17.12.2012, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



Код

(defun flat (w &optional acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((flat (car w) (flat (cdr w) acc)))))
 
> (flat '(a (b (c))))
(A B C)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
Catstail
Дата 14.1.2013, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 14.1.2013

Репутация: нет
Всего: нет



Мне кажется, Вы проделали лишнюю работу... Если списки имеют вид (a (b (c (d (e (f)))))), то проще так:

Код

(defun trans (lst)
  (cond ((null lst) nil)
        (t (cons (car lst) (trans (cadr lst))))))

==> trans

(trans '(a (b (c (d (e))))))

==> (a b c d e)


PM MAIL   Вверх
_sg
Дата 14.1.2013, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



Код

(defun meet (w)
  (when w (cons (car w) (meet (cadr w)))))

> (meet '(a (b (c (d (e))))))
(A B C D E)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.