Код | (defun deploy-atoms (w &aux (v (remove-if #'atom w)) (z (remove-if-not #'atom w))) (deploy (sort (mapcan #'atom-num v) #'< :key #'cadr) z))
(defun deploy (w v &optional (n 1) &aux (a (car w)) (d (cdr w))) (cond ((null w) nil) ((= (cadr a) n) (cons (car a) (deploy d v (1+ n)))) (t (cons (car v) (deploy w (cdr v) (1+ n))))))
(defun atom-num (w &aux (a (car w))(d (cdr w))) (mapcar #'(lambda (e) `(,a ,e)) d))
> (deploy-atoms '((a 1 3 6) c (d 2 5))) (A D A C D A)
|
Добавлено через 11 минут и 26 секунд
Код | (defun deploy-atoms (w) (deploy (sort (mapcan #'atom-num (remove-if #'atom w)) #'< :key #'cadr) (remove-if-not #'atom w)))
(defun deploy (w v &optional (n 1) &aux (a (car w))) (when w (if (= (cadr a) n) (cons (car a) (deploy (cdr w) v (1+ n))) (cons (car v) (deploy w (cdr v) (1+ n))))))
(defun atom-num (w &aux (a (car w))) (mapcar #'(lambda (e) `(,a ,e)) (cdr w)))
> (deploy-atoms '((a 1 3 6) (d 2 5))) (A D A NIL D A)
|
|