Список: Сформировать из 3 списков новый, изъяв элементы, которые совпадают (логическое "ИЛИ") - Lisp

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

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

Помогите разработать рекурсивную функцию для работы со списками:
Нужно сформировать из 3 списков новый, изъяв элементы, которые совпадают (логическое "ИЛИ")

Решение задачи: «Список: Сформировать из 3 списков новый, изъяв элементы, которые совпадают (логическое "ИЛИ")»

textual
Листинг программы
(defun inters (s1 s2)
  (cond ((null s1) nil)
        ((member (car s1) s2) (cons (car s1) (inters (cdr s1) s2)))
        (t (inters (cdr s1) s2))))
 
==> inters
 
(inters '(1 2 3 4) '( 3 4 5 6))
 
==> (3 4)
 
(defun diff (s1 s2)
   (cond ((null s1) nil)
         ((member (car s1) s2) (diff (cdr s1) s2))
         (t (cons (car s1) (diff (cdr s1) s2)))))
 
==> diff
 
(diff '(1 2 3 4 5) '(t y 3 4))
 
==> (1 2 5)
 
(defun task (a1 a2 a3)
  (let ((a (append a1 a2 a3))
        (a12 (inters a1 a2))
        (a13 (inters a1 a3))
        (a23 (inters a2 a3)))
    (diff (diff (diff a a12) a13) a23)))
 
==> task
 
(task '(1 2 3) '(1 4 5) '(1 3 6))
 
==> (2 4 5 6)

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

В коде реализованы три функции:

  1. inters — принимает два списка, ищет пересечение множеств, используя оператор OR (логическое ИЛИ), и возвращает новый список, содержащий только уникальные элементы пересечения.
  2. diff — принимает два списка, ищет разность множеств, используя оператор OR (логическое ИЛИ), и возвращает новый список, содержащий только уникальные элементы, которые есть в первом списке, но отсутствуют во втором.
  3. task — принимает три списка, объединяет их в один список, затем находит пересечение первого и второго списков, пересечение первого и третьего списков и пересечение второго и третьего списков, а затем находит их разность. Возвращает новый список, содержащий только уникальные элементы, которые есть в первом списке, но отсутствуют в объединении второго и третьего списков.

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


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

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

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