Подсчитать число вхождений атома Х и 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы