> 1 <

Автор Сообщение

trin

Members


Статус

22 сообщений

Где: Ukraine
Род занятий:
Возраст:

#3383   2010-11-12 18:48 GMT+3 часа(ов)      
Используя приемы рекурсии в Лиспе, выполнить преобразования:
Получая,в качестве исходного , любой многоуровневый список вида (a b ((c d) e f)g(h)) образовать результирующий список вида
(a b ((c d 2) e f 3)g(h 1)5),
т.е. в списке и в каждом подсписке следует дописать в дополнительной позиции количество присутствующих там элементов.


Есть программа, и работает как надо, но сдесь нельзя использовать функционалы

(defun f(l)
(cond
((null l) nil)
((atom l) l)
(t(append (mapcar 'f l) (list (length l))))))

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3387   2010-11-12 19:04 GMT+3 часа(ов)      
А «сдесь» - это где?

trin

Members


Статус

22 сообщений

Где: Ukraine
Род занятий:
Возраст:

#3390   2010-11-12 19:08 GMT+3 часа(ов)      
Кажется Вы помогали с этой работой, т.е. нельзя использовать функции mapcar и подобные им для выполнения работ

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3391   2010-11-12 19:13 GMT+3 часа(ов)      
Имеется в виду, конечно, не текст программы. Впрочем, вопрос снят.

trin

Members


Статус

22 сообщений

Где: Ukraine
Род занятий:
Возраст:

#3392   2010-11-12 19:15 GMT+3 часа(ов)      
ну вот (mapcar 'f l)
или я не правильно назвал эту функцию?

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3394   2010-11-12 19:22 GMT+3 часа(ов)      
Так можно?
(defun F (L &optional (count 0))
(cond
((null L) (cons count nil))
((atom L) L)
(T (cons (F (car L)) (F (cdr L) (1+ count))))))

trin

Members


Статус

22 сообщений

Где: Ukraine
Род занятий:
Возраст:

#3395   2010-11-12 19:30 GMT+3 часа(ов)      
так вроде бы можно, только можете обьяснить (L &optional (count 0)) зачем оно используется?

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#3396   2010-11-12 19:47 GMT+3 часа(ов)      
Используется для подсчета длины списка.

trin

Members


Статус

22 сообщений

Где: Ukraine
Род занятий:
Возраст:

#3397   2010-11-12 19:53 GMT+3 часа(ов)      
Без этого нельзя? может сдесь можно использовать ф-ю length?

megamanx

Members


Статус

307 сообщений

Где: Russia
Род занятий:
Возраст:

#3399   2010-11-12 23:55 GMT+3 часа(ов)      
Здесь это не тРу). если без неё, то можно через лаблы, вроде как называется аккумулятором, в общем случае. чёт я расписался в последнее время.
(defun F1 (L)
(labels ((ret (L count)
(cond
((null L) (cons count nil))
((atom L) L)
(T (cons (ret (car L) 0) (ret (cdr L) (1+ count)))))))
(ret L 0)))
I wish I'd made you angry earlier
> 1 <


Онлайн :

0 пользователь(ей), 32 гость(ей) :