Создать новый список с уникальными значениями - 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
является список с уникальными значениями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д