Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun get_sum (lst a b)
- (get_sum_helper lst a b 0))
- Проверяет, что в списке есть числа
- (defun check_nums_helper (lst check)
- (cond
- (
- (or (null lst) check)
- check
- )
- (
- (numberp (car lst))
- )
- (
- (listp (car lst))
- (check_nums_helper (cdr lst) (check_nums_helper (car lst) check))
- )
- (
- (check_nums_helper (cdr lst) check)
- )
- )
- )
- Вспомогательная функция обертка для проверки, что в списке есть числа
- (defun check_nums (lst)
- (check_nums_helper lst nil))
- Функция вставки элемента на k-ую позицию:
- (defun insert_element_helper (lst k element new_lst)
- (cond
- (
- (null lst)
- new_lst
- )
- (
- (= k 0)
- (insert_element_helper (cdr lst) (- k 1) element (cons (car lst) (cons element new_lst)))
- )
- (
- (insert_element_helper (cdr lst) (- k 1) element (cons (car lst) new_lst))
- )
- )
- )
- Вспомогательная функция-обертка для вставки элемента на k-ую позицию:
- (defun insert_element (lst k element)
- (reverse (insert_element_helper lst k element nil))
- )
- Функция, которая определяет, есть ли в списке числа, если есть, то она вычисляет сумму четных чисел между a и b и вставляет на k-ую позицию списка, иначе выводит сообщение, что чисел нет:
- (defun task (lst a b k)
- (cond
- (
- (check_nums lst)
- (insert_element lst k (get_sum lst a b))
- )
- ((princ "There are no numbers in the list"))
- )
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement