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

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

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

Помогите решить задачи почти готовые 1.Удалить из списка все элементы, меньше заданного x. Например: дано (3 6 8 3 5 6), x=6, получить (3 3 5) вроде подобное что-то нашел, но не понял как производить с ней потом вычисления
Листинг программы
  1. (defun DEL (A X)
  2. (if X
  3. (if (equal (car X) A)
  4. (DEL A (cdr X))
  5. (cons (car X) (DEL A (cdr X))))))
2. Дана функция y=3*x^3 + 4*x . Написать программу для поиска минимального значения y в промежутке x[-2;2] с шагом 0,3
Листинг программы
  1. (loop for i from -10 to 10 by 3 maximize (+ (* (expt (* 0.2 i) 3) 3) (* 4 x)))

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

textual
Листинг программы
  1. (defun drop-less (n w)
  2.   (labels ((drop (n w ac &aux (a (car w)))
  3.              (if w (drop n (cdr w) (if (< a n) ac (cons a ac)))
  4.                  (nreverse ac))))
  5.     (drop n w nil)))
  6.  
  7. > (drop-less 10 '(7 8 9 10 11))
  8. (10 11)

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

В коде представлена функция drop-less, которая принимает два аргумента: n и w. Список w передаётся в функцию drop, которая принимает три аргумента: n, w и ac. В функции drop создаётся новая переменная a, которая содержит первый элемент списка w. Затем проверяется, есть ли ещё элементы в списке w. Если есть, то функция drop вызывается рекурсивно с аргументами n и cdr w, где cdr w — это список, полученный путём удаления первого элемента из w. Если значение a меньше n, то в список ac добавляется значение a. Если значение a больше или равно n, то в список ac добавляется список ac в обратном порядке. В конце функция drop-less вызывается с аргументами n и w для получения результата. Результатом работы функции является список, содержащий только элементы, большие заданного значения n.

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


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

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

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

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

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

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