Нужно найти максимум в многоуровневой списке. но при этом не делая из него одноуровневый. из начально я сделала так:
| Код |
(defun odno (x) (cond ((eq x nil) nil) ((atom (car x)) (cons (car x) (odno (cdr x)))) (t (append (odno (car x)) (odno (cdr x)))))) ODNO CL-USER 2 > (odno '(2 (3 (4 5) 6) 7 (8 9) 10 (11 (12 13) 14) 15)) (2 3 4 5 6 7 8 9 10 11 12 13 14 15)
|
| Код | (defun max1 (x) (cond ((and (atom (car x)) (null (cdr x))) (car x)) ((> (car x) (max1 (cdr x))) (car x)) (t (max1 (cdr x))))) MAX1
CL-USER 6 : 2 > (max1 '(2 3 4 5 6 7 8 9 10 1 2 3 4)) 10
|
оказалось это слишком простой вариан. теперь думаю нужно написать 1 функцию примерно такую:
| Код | (defun max1 (x y) (cond ((> x y) x) (t y))) MAX1
|
а потом
| Код | (defun max2 (x) (cond ((and (atom (car x)) (atom (cadr x))) (cons (max1 (car x) (cadr x)) (max2 (cdr x)))) (t 0)))
|
а вот что за место нуля??? голову сломала уже. помогите пожалуйста.
|