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