Подсчитать число вхождений атома Х и Y в простой список - Lisp
Формулировка задачи:
(defun count_x (x list y)
(cond
((null list) 0)
((= 0 (rem y 2))
(cond
((eql x (car list)) (+ 1 (count_x x (cdr list) (+ 1 y))))
( t (count_x x (cdr list) (+ 1 y)))
)
)
( t (count_x x (cdr list) (+ 1 y)))
)
)Решение задачи: «Подсчитать число вхождений атома Х и Y в простой список»
textual
Листинг программы
(defun counter (a b w) (+ (count a w) (count b w))) > (counter 3 5 '(1 2 3 4 5 3 5 5)) 5
Объяснение кода листинга программы
В коде определён пользовательский функтор с именем counter, который принимает три аргумента: a, b и w. Функция counter сначала применяет к списку w функцию count с аргументом a, затем результат складывается с результатом вызова функции count с аргументом b. В данном примере вызывается функция counter с аргументами 3, 5 и '(1 2 3 4 5 3 5 5). Функция count с аргументом 3 (т.е. #3) будет подсчитывать количество вхождений числа 3 в списке, аналогично для аргумента 5 и числа 5. В результате выполнения функции counter количество вхождений чисел 3 и 5 в списке суммируется и возвращается в качестве результата. В данном случае результатом будет число 5.