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

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

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

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

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

textual
Листинг программы
  1. (defun task (lst)
  2.   (let ((s1 (nth 0 lst))
  3.         (s3 (nth 2 lst))
  4.         (s7 (nth 6 lst)))
  5.     (if (and (numberp s1) (numberp s3) (numberp s7)) (+ s1 s3 s7) (car (last lst)))))
  6.  
  7. ==> TASK
  8.  
  9. (task '(1 2 3 4 5 6 7 8))
  10.  
  11. ==> 11
  12.  
  13. (task '(1 2 3 4 5 6 a 8))
  14.  
  15. ==> 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

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

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

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