> 1 <

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

alexandr

Members


Статус

5 сообщений

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

#1101   2010-01-09 14:52 GMT+3 часа(ов)      
Дано задание:
Определить функцию, выполняющую следующие действия: список, в котором каждый элемент является подсписком уровня, соответствующего его месту.
>(name ‘(a w q e))
(a (w) ((q)) (((e))))
Я сделал это двумя способами. Декларативно:
(defun name (list)
(cond
((null list) nil)
(t (func list 0))
))
 
(defun func (list n)
(cond
((null (cdr list)) (ring list n))
(t (cons (ring (car list) n) (func (cdr list) (+ n 1)) ))
))
 
(defun ring (list n)
(cond
((< n 1) list)
(t (ring (cons list nil) (- n 1)))
))
 

и императивно:
(defun namec (list)
(progn
(setq m 0)
(do (( tmp (cons (car list) nil) ))
((null (car list)) tmp)
(progn
(setq list (cdr list))
(cond
((null (null (car list))) (setq tmp (append tmp (rinc (car list) (setq m (+ m 1)) ))))
)))
))
 
(defun rinc (list n)
(cond
((< n 1) (cons list nil))
(t (rinc (cons list nil) (- n 1)))
))
 


Но теперь мне необходимо реализовать то же самое, но уже с использованием функций высокого порядка. А я с трудом представляю, что это такое. Помогите, пожалуйста!

VH

Members


Статус

289 сообщений

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

#1102   2010-01-09 15:37 GMT+3 часа(ов)      
[зачеркнуто] Декларативно [/зачеркнуто] рекурсивно:
(defun F (L)
(if L
(cons
(car L)
(F (mapcar 'list (cdr L))))))

alexandr

Members


Статус

5 сообщений

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

#1132   2010-01-13 05:48 GMT+3 часа(ов)      
Спасибо большое! А нельзя это как-то прокомментировать?

gihar

Moderators


Статус

249 сообщений

Где: --- да вот он я? приехал уже из Катманду
Род занятий: конкретный
Возраст: 4

#1145   2010-01-14 10:00 GMT+3 часа(ов)      
to alexandr:
Видимо комментировать особо нечего
суть в одном моменте:
(заряди отладчик)

> (mapcar 'list '(1 2 3 4))
((1) (2) (3) (4))

> (mapcar 'list *)
(((1)) ((2)) ((3)) ((4)))

> (mapcar 'list *)
((((1))) (((2))) (((3))) (((4))))

> (mapcar 'list *)
(((((1)))) ((((2)))) ((((3)))) ((((4)))))
Это было точно последнее редактирование
> 1 <


Онлайн :

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