Загрузка данных


; №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))))
  )
)