Сумма элементов списка Lisp

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

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

Написать программу: задан список. Найти сумму первого, третьего и седьмого элементов списка, если указанные элементы - числа. В противном случае возвратить последний элемент списка.

Решение задачи: «Сумма элементов списка Lisp»

textual
Листинг программы
(defun task (lst)
  (let ((s1 (nth 0 lst))
        (s3 (nth 2 lst))
        (s7 (nth 6 lst)))
    (if (and (numberp s1) (numberp s3) (numberp s7)) (+ s1 s3 s7) (car (last lst)))))
 
==> TASK
 
(task '(1 2 3 4 5 6 7 8))
 
==> 11
 
(task '(1 2 3 4 5 6 a 8))
 
==> 8

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

В коде определена функция task, которая принимает один аргумент lst. В функции используется оператор let для создания трех переменных: s1, s3 и s7, которые содержат соответственно первый, третий и седьмой элементы списка lst. Затем с помощью условного оператора if проверяется, являются ли переменные s1, s3 и s7 числами. Если это так, то выполняется операция сложения и результат сохраняется в переменную s1. В противном случае, возвращается первый элемент последнего списка (который является результатом применения функции car к результату операции last lst). В конце кода функция task вызывается с аргументом '(1 2 3 4 5 6 7 8), что приводит к выводу 11. Затем функция вызывается с аргументом '(1 2 3 4 5 6 a 8), где a — не число, поэтому результатом будет первый элемент последнего списка, то есть 8.

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


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

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

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