Разность списков - Lisp
Формулировка задачи:
Определите функцию, зависящую от двух аргументов u и v,
являющихся списками, которая вычисляет список всех элементов u, не
содержащихся в v.
Я пытался:
(defun f (u v) (cond ((null u) nil) ((equal (car u)(car v)) (f (cdr u)(cdr v))) (t (cons(car u) (f (cdr u)(cdr v)))) )) (f '(x y a f b 7 y x a b)'(x y a f b d h o u t p p r x)) ==> (7 y x a b)
Решение задачи: «Разность списков»
textual
Листинг программы
(defun diff-lists (x y) (remove-if #'(lambda (z) (member z y)) x)) ==> DIFF-LISTS (diff-lists '(1 2 3 4 5) '(3 4 5 6 7 8)) ==> (1 2)
Объяснение кода листинга программы
В коде определена функция DIFF-LISTS, которая принимает два аргумента X и Y. Функция использует оператор REMOVE-IF для фильтрации списка X, который возвращает только те элементы, которые не встречаются в списке Y. То есть функция возвращает список, вычтенный из первого списка, который содержит только общие элементы с вторым списком. При вызове функции с аргументами '(1 2 3 4 5) и '(3 4 5 6 7 8) возвращается список (1 2), так как эти элементы отсутствуют во втором списке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д