Напишите функцию удаляющую повторные вхождения элементов в список - Lisp

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

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

Напишите функцию удаляющую повторные вхождения элементов в список

Решение задачи: «Напишите функцию удаляющую повторные вхождения элементов в список»

textual
Листинг программы
  1. (defun drop-duplicates (w)
  2.   (cond ((null w) nil)
  3.         ((member (car w) (cdr w)) (drop-duplicates (cdr w)))
  4.         ((cons (car w) (drop-duplicates (cdr w))))))
  5.  
  6. > (drop-duplicates '(1 1 1 a a))
  7. (1 A)

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

В данном коде представлена функция drop-duplicates, которая удаляет повторяющиеся элементы из списка. Код работает следующим образом:

  1. Если входной список w является пустым, то возвращается nil.
  2. Если первый элемент списка w уже присутствует в оставшейся части списка (т.е. он является дубликатом), то функция вызывается рекурсивно для оставшейся части списка.
  3. Если первый элемент списка w не является дубликатом, то он добавляется в новый список, который возвращается в качестве результата. Пример использования функции:

    (drop-duplicates '(1 1 1 a a)) (1 A) В этом примере функция удаляет все повторяющиеся элементы из списка '(1 1 1 a a) и возвращает список без дубликатов: (1 A).

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


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

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

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

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

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

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