Вставить элемент в отсортированный список с сохранением порядка - Lisp

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

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

Получить новый отсортированный список путем вставки заданного элемента в исходный отсортированный в порядке возрастания элементов список.

Решение задачи: «Вставить элемент в отсортированный список с сохранением порядка»

textual
Листинг программы
  1. (defun plunge-in (n w)
  2.   (when w (let ((a (car w)) (d (cdr w)))
  3.             (cond ((atom d) (list a n))
  4.                   ((> n a) (cons a (plunge-in n d)))
  5.                   ((cons n w))))))
  6.  
  7. > (plunge-in 7 '(1 3 5 8 11))
  8. (1 3 5 7 8 11)

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

В данном коде представлена функция plunge-in, которая принимает два аргумента: n и w. Если w не равно nil, то из него сначала извлекаются первый и второй элементы, которые сохраняются в переменных a и d соответственно. Затем выполняется проверка: если d является атомом (то есть является одиночным элементом), то возвращается список, содержащий только a и n. Если n больше a, то рекурсивно вызывается функция plunge-in с аргументами n и d, и результатом этой функции заменяется a. Если n меньше или равно a, то возвращается исходный список w. При вызове функции plunge-in с аргументами 7 и (1 3 5 8 11), сначала извлекаются a и d (соответственно 5 и (8 11). Поскольку d не является атомом, вызывается рекурсивная функция plunge-in с аргументами 7 и (8 11). В результате этого вызова получается список (1 3 5 7 8 11), который и возвращается в качестве результата.

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


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

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

10   голосов , оценка 4.2 из 5

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

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

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