Убрать дубликаты элементов в числовом списке - Lisp

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

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

Здравствуйте! Нужно итерационно удалить повторы из числового списка (Lisp). Например, при вводе '(5 8 9 5 8 9) программа должна вывести (5 8 9).

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

textual
Листинг программы
(defun make-uniq (lst)
  (let ((res nil))
    (dolist (i lst (reverse res))
     (unless (member i res) (push i res)))))
 
==> make-uniq
 
(make-uniq '(1 2 3 1 2 3 2 2 3 3 5))
 
==> (1 2 3 5)

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

В коде реализована функция make-uniq, которая удаляет дубликаты из числового списка. Вот список элементов с их номерами:

  1. (defun make-uniq (lst) — функция с именем make-uniq принимает один аргумент lst
  2. (let ((res nil)) — в локальной переменной res хранится результат
  3. (dolist (i lst (reverse res)) — цикл dolist проходит по элементам lst в обратном порядке
  4. (unless (member i res) (push i res)) — если элемент i не содержится в res, то он добавляется в конец res с помощью функции push
  5. ) — конец функции make-uniq Пример использования функции:
  6. (make-uniq '(1 2 3 1 2 3 2 2 3 3 5)) — вызов функции make-uniq с аргументом (1 2 3 1 2 3 2 2 3 3 5)
  7. => (1 2 3 5) — результат работы функции, список без дубликатов (1 2 3 5)

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


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

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

12   голосов , оценка 3.833 из 5
Похожие ответы