Сколько всего атомов в этом S-выражении? - Lisp

Узнай цену своей работы

Формулировка задачи:

Даны атом и S-выражение. Определить функцию, вычисляющую, сколько всего атомов в этом S-выражение исключая заданный атом. Например если дано: "2 (1 2 (3 (2 4)) (5 2))", ответом будет 4

Решение задачи: «Сколько всего атомов в этом S-выражении?»

textual
Листинг программы
  1. (defun count-exept (a w)
  2.   (if w
  3.       (+ (cond ((eq a (car w)) 0)
  4.                ((atom (car w)) 1)
  5.                ((count-exept a (car w))))
  6.          (count-exept a (cdr w)))
  7.       0))
  8.  
  9. > (count-exept 2 '(1 2 (3 (2 4)) (5 2)))
  10. 4

Объяснение кода листинга программы

В данном коде определен функционал с названием count-exept. Этот функционал принимает два аргумента, a и w. Если w не равно nil, то функционал возвращает сумму трех слагаемых:

  1. Если a равно car w, то возвращается 0.
  2. Если w является атомом, то возвращается 1.
  3. Если count-exept применимо к a и w, то возвращается результат его применения. Если w равно nil, то функционал возвращает 0. В конце кода приведен пример использования функционала с аргументами 2 и '(1 2 (3 (2 4)) (5 2)). Функционал должен посчитать количество атомов в данном S-выражении, то есть, он должен вернуть 4.

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


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

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

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы