Удалить из списка все элементы, меньше заданного х - Lisp

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

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

удалить из списка все элементы, меньше заданного х. например дано (3 6 8 3 5 6), х=5, получить (6 8 6).

Решение задачи: «Удалить из списка все элементы, меньше заданного х»

textual
Листинг программы
  1. (defun del-less (lst x)
  2.   (if (null lst) nil
  3.       (if (< (car lst) x) (del-less (cdr lst) x)
  4.                           (cons (car lst) (del-less (cdr lst) x)))))  
  5.  
  6. ==> del-less
  7.  
  8. (del-less '(3 6 8 3 5 6) 5)
  9.  
  10. ==> (6 8 5 6)
  11.  
  12. ;; или
  13.  
  14. (defun del-less (lst x)
  15.   (remove-if #'(lambda (y) (< y x)) lst))
  16.  
  17. ==> del-less
  18.  
  19. (del-less '(3 6 8 3 5 6) 5)
  20.  
  21. ==> (6 8 5 6)

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

В обоих представленных фрагментах кода определена функция del-less, которая принимает два аргумента: список lst и число x. В первом фрагменте кода реализован рекурсивный алгоритм удаления из списка всех элементов, меньших заданного числа x. Вспомогательная функция del-less вызывается рекурсивно для списка cdr, пока не будет достигнуто условие окончания рекурсии (список lst не станет nil). Если текущий элемент списка lst меньше x, то рекурсивный вызов del-less происходит для списка cdr и аргументом x. В противном случае, если текущий элемент списка lst больше или равен x, то он добавляется в начало нового списка, который возвращается в качестве результата. Во втором фрагменте кода используется встроенная функция remove-if, которая принимает список и предикат, и возвращает новый список, содержащий только те элементы исходного списка, для которых предикат возвращает nil. В качестве предиката используется анонимная функция, которая проверяет, является ли элемент списка y меньше x. Если это условие выполняется, то возвращается nil, иначе возвращается сам элемент. Таким образом, в обоих случаях результатом выполнения функции del-less для списка lst и числа x будет новый список, в котором удалены все элементы, меньшие x.

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


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

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

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

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

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

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