; №4
(DEFUN MY_LAST (L)
(COND
((NULL (CDR L)) (CAR L))
(T (MY_LAST (CDR L)))
)
)
; №5
(DEFUN MY_REVERSE (L)
(COND
((NULL L) NIL)
(T (MY_REVERSE_HELPER L NIL))
)
)
; Вспомогательная функция для №5
(DEFUN MY_REVERSE_HELPER (L R)
(COND
((NULL L) R)
(T (MY_REVERSE_HELPER (CDR L) (CONS (CAR L) R)))
)
)
; №6
(DEFUN COUNT_ATOMS (L)
(COND
((NULL L) 0)
((ATOM (CAR L)) (+ 1 (COUNT_ATOMS (CDR L))))
(T (+ (COUNT_ATOMS (CAR L)) (COUNT_ATOMS (CDR L))))
)
)
; №7
(DEFUN ONLY_ATOMS (L)
(COND
((NULL L) NIL)
((ATOM (CAR L))
(CONS (CAR L) (ONLY_ATOMS (CDR L))))
(T (MY_MERGE_ATOMS (ONLY_ATOMS (CAR L)) (ONLY_ATOMS (CDR L))))
)
)
; Вспомогательная функция для №7
(DEFUN MY_MERGE_ATOMS (L R)
(COND
((NULL L) R)
(T (CONS (CAR L) (MY_MERGE_ATOMS (CDR L) R)))
)
)
; №8
(DEFUN INTO_SORT (X L)
(COND
((NULL L) (CONS X NIL))
((= X (CAR L)) (CONS X L))
((> (CAR L) X) (CONS X L))
(T (CONS (CAR L) (INTO_SORT X (CDR L))))
)
)
; №9
(DEFUN MY_SORT (L)
(COND
((NULL L) NIL)
(T (INTO_SORT (CAR L) (MY_SORT (CDR L))))
)
)
; №10
(DEFUN MY_MERGE (L R)
(COND
((NULL L) R)
((NULL R) L)
((= (CAR L) (CAR R))
(CONS (CAR L) (MY_MERGE (CDR L) (CDR R))))
((> (CAR R) (CAR L))
(CONS (CAR L) (MY_MERGE (CDR L) R)))
(T (CONS (CAR R) (MY_MERGE L (CDR R))))
)
)
; №11
(DEFUN MAX_LIST (L)
(COND
((NULL (CDR L)) (CAR L))
((> (CAR L) (MAX_LIST (CDR L))) (CAR L))
(T (MAX_LIST (CDR L)))
)
)
; №12
(DEFUN MIN_LIST (L)
(COND
((NULL (CDR L)) (CAR L))
((> (MIN_LIST (CDR L)) (CAR L)) (CAR L))
(T (MIN_LIST (CDR L)))
)
)
; №13
(DEFUN SUM_LIST (L)
(COND
((NULL L) 0)
(T (+ (CAR L) (SUM_LIST (CDR L))))
)
)