| ЛИсп победа |
[Nov. 29th, 2006|06:36 pm] |
ДАДАДАДА.
Вот над этим я думал 4 дня. реализация всего в 4 строчки, гениально разделяй и властвуй, а я я хотел изначально всё сделать в 2 функции а хрен там подобный, список в данном случаи собираеться с конца. А тот список который надо получить необхоимо собирать сначала и не как либо.
постановка:
10. (REV1 x), где x - список, обращает список x и разбивает его на уровни так, как указано ниже: >(rev1 ‘(a b c))
решание
(defun rev (x)(cond ((eq x nil) nil)(t (ap (rev (cdr x)) (cons (if (atom (car x)) ( car x) ( rev (car x))) nil))))) – перемена местами
(defun ap (x y)(cond ((eq x nil) y)(t (cons (car x) (ap (cdr x) y))))) – собирает список
(defun sp (x) (if (eq (cdr x) nil) x (cons (car x)(cons (sp (cdr x)) nil)))) – подготавливает список
(defun rev1 (x)(rev (sp x))) – сборка.
резкльтат
CL-USER 8 : 1 > (rez '(d e r)) 0 REZ > ... >> X : (D E R) 0 REZ < ... << VALUE-0 : (((R) E) D) (((R) E) D) |
|
|
| Comments: |
From: (Anonymous) 2006-11-29 08:31 pm (UTC)
| (Link)
|
какой я умный | |