Создать новый список с уникальными значениями - Lisp
Формулировка задачи:
Даны 2 списка например (1 2 3 4) и ( 2 3).Создать новый список,в котором будут содержатся уникальные элементы(например элементы 1-ого,которых нет во втором)
(1 2 3 4) и ( 2 3) и получить новый список (1 4).
Честно не знаю как реализовывать,если например найти минимум или максимум, то на Лиспе это могу.
А вот уникальные элементы.
Решение задачи: «Создать новый список с уникальными значениями»
textual
Листинг программы
(defun make-set (lst) (cond ((null lst) nil) (t (cons (car lst) (make-set (remove (car lst) (cdr lst))))))) ==> make-set (make-set '(1 2 3 1 2 3 1 2 3 3 3)) ==> (1 2 3)
Объяснение кода листинга программы
В коде определён функционал для создания нового списка с уникальными значениями. При передаче списка в функцию make-set, она проверяет его на пустоту. Если список пуст, то возвращается nil. В ином случае, с помощью функции cons создаётся новый элемент, который является первым элементом из входного списка. Затем, с помощью функции remove из списка удаляются все повторяющиеся элементы, и полученный список передаётся в рекурсивный вызов функции make-set для обработки оставшихся элементов. В результате получается список с уникальными значениями.
Пояснение к решению:
- Создаётся новая функция
make-set. - Если входной список пуст, то возвращается
nil. - В ином случае, с помощью функции
consсоздаётся новый элемент, который является первым элементом из входного списка. - С помощью функции
removeиз списка удаляются все повторяющиеся элементы. - Полученный список передаётся в рекурсивный вызов функции
make-setдля обработки оставшихся элементов. - Результатом работы функции
make-setявляется список с уникальными значениями.