Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.98 KB | None | 0 0
  1. (defun get_sum (lst a b)
  2.        (get_sum_helper lst a b 0))
  3.  
  4. Проверяет, что в списке есть числа
  5.  (defun check_nums_helper (lst check)
  6.        (cond
  7.          (
  8.           (or (null lst) check)
  9.           check
  10.           )
  11.          (
  12.           (numberp (car lst))
  13.          )
  14.          (
  15.           (listp (car lst))
  16.           (check_nums_helper (cdr lst) (check_nums_helper (car lst) check))
  17.           )
  18.          (
  19.           (check_nums_helper (cdr lst) check)
  20.           )
  21.          )
  22.        )
  23.  
  24. Вспомогательная функция обертка для проверки, что в списке есть числа
  25. (defun check_nums (lst)
  26.        (check_nums_helper lst nil))
  27.  
  28. Функция вставки элемента на k-ую позицию:
  29. (defun insert_element_helper (lst k element new_lst)
  30.        (cond
  31.          (
  32.           (null lst)
  33.           new_lst
  34.           )
  35.           (
  36.            (= k 0)
  37.            (insert_element_helper (cdr lst) (- k 1) element (cons (car lst) (cons element new_lst)))
  38.            )
  39.           (
  40.            (insert_element_helper (cdr lst) (- k 1) element (cons (car lst) new_lst))
  41.            )
  42.           )
  43.        )
  44.  
  45. Вспомогательная функция-обертка для вставки элемента на k-ую позицию:
  46. (defun insert_element (lst k element)
  47.        (reverse (insert_element_helper lst k element nil))
  48.        )
  49.  
  50. Функция, которая определяет, есть ли в списке числа, если есть, то она вычисляет сумму четных чисел между a и b и вставляет на k-ую позицию списка, иначе выводит сообщение, что чисел нет:
  51. (defun task (lst a b k)
  52.        (cond
  53.          (
  54.           (check_nums lst)
  55.           (insert_element lst k (get_sum lst a b))
  56.           )
  57.          ((princ "There are no numbers in the list"))
  58.          )
  59.        )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement