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

  1. Создаётся новая функция make-set.
  2. Если входной список пуст, то возвращается nil.
  3. В ином случае, с помощью функции cons создаётся новый элемент, который является первым элементом из входного списка.
  4. С помощью функции remove из списка удаляются все повторяющиеся элементы.
  5. Полученный список передаётся в рекурсивный вызов функции make-set для обработки оставшихся элементов.
  6. Результатом работы функции make-set является список с уникальными значениями.

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


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

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

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