Работа со списками - Lisp (229163)

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

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

Нужна помощь с задачей: написать функцию, которая принимает целое число и возвращает из заданного списка с подсписками и массивами наименьшее из четных чисел, больших аргумента

Решение задачи: «Работа со списками»

textual
Листинг программы
(defun task (lst n)
  (let ((a
    (remove-if-not (lambda (y) (and (numberp y) (evenp y) (> y n)))
       (mapcar (lambda (x) 
                  (cond ((listp x) (task x n))
                        ((numberp x) x)
                        (t nil))) lst))))
       (if (null a) nil (apply 'min a)))) 
 
==> TASK
 
(task '(57 (57 71)  ((11 44 55 55) (22 33 44 55))) 33)
 
==> 44

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

В данном коде определен функционал для работы со списками. Пример использования:

  1. Создана функция task, которая принимает два аргумента: lst (список) и n (число).
  2. Внутри функции используется let для создания двух переменных: a и b. Значение переменной a будет определяться в зависимости от условий, а значение переменной b будет равно результату работы функции mapcar, которая применяет указанную анонимную функцию к каждому элементу списка lst.
  3. Анонимная функция, применяемая к каждому элементу списка lst, проверяет, является ли элемент числом и четным, и если да, то рекурсивно вызывает функцию task для этого элемента и n, или возвращает само число, если элемент является числом, но не является четным, или возвращает nil, если элемент не является числом.
  4. Результатом работы функции mapcar будет список, состоящий из результатов применения анонимной функции к каждому элементу списка lst.
  5. Если результат работы функции mapcar не является nil, то возвращается минимальное значение из этого списка. Если результат работы функции mapcar является nil, то возвращается nil. Код вызывается с аргументами: lst = '(57 (57 71) ((11 44 55 55) (22 33 44 55))) и n = 33. Результатом работы кода будет число 44.

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


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

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

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