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

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

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

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

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

textual
Листинг программы
(defun drop-duplicates (w)
  (cond ((null w) nil)
        ((member (car w) (cdr w)) (drop-duplicates (cdr w)))
        ((cons (car w) (drop-duplicates (cdr w))))))
 
> (drop-duplicates '(1 1 1 a a))
(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
Похожие ответы