Как упростить программу по удалению элемента из списка - Lisp

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

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

Здравствуйте, помогите упростить программу. Программа удаляет следующим образом пример (delete '(1 2 3 4 5 2 4 2) 2) результат (1 3 4 5 2 4 2), то есть удаление без повторения.
Листинг программы
  1. (defun delete2(L x)
  2. (cond
  3. ((null L) ())
  4. ((equal x (car L)) ())
  5. (T (cons (car L) (delete2 (cdr L) x)))
  6. )
  7. )
  8. (defun delete1(L x)
  9. (cond
  10. ((null L) ())
  11. ((equal x (car L)) (cdr L))
  12. (T (delete1 (cdr L) x))
  13. )
  14. )
  15. (defun delete(L x)
  16. (cond
  17. ((null L) ())
  18. (T (append (delete2 L x) (delete1 L x)))
  19. )
  20. )

Решение задачи: «Как упростить программу по удалению элемента из списка»

textual
Листинг программы
  1. (defun delete3(x L)
  2. (cond
  3.     ((null L) nil)
  4.     ((equal x (car L)) (cdr L))
  5.     (T (cons (car L) (delete3 x (cdr L))))
  6. )
  7. )

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

В данном коде определён функционал для удаления третьего (или последующих) элемента из списка, который соответствует заданному условию (x). Вот список с пояснениями к каждому элементу кода:

  1. (defun delete3(x L) - функция с именем delete3 принимает два аргумента: x и L.
  2. (cond - начало условного оператора.
  3. ((null L) nil) - первое условие: если список L пуст, то возвращается nil.
  4. ((equal x (car L)) (cdr L)) - второе условие: если первый элемент списка L равен x, то возвращается список без первого элемента (cdr L).
  5. (T (cons (car L) (delete3 x (cdr L)))) - третье условие: если текущий элемент не равен x, то создаётся новый список, в котором первый элемент - это текущий элемент, а все последующие элементы - это результат вызова функции delete3 для оставшейся части списка (cdr L).
  6. ) - конец условного оператора.
  7. ) - конец функции delete3.

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


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

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

6   голосов , оценка 3.667 из 5

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

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

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