Работа со списками и умножение многочленов - Lisp
Формулировка задачи:
Решение задачи: «Работа со списками и умножение многочленов»
- CL-USER> (defun foo (&rest sets)
- (let ((rests (rest sets)))
- (loop for i in (first sets)
- when (not (remove
- nil
- (mapcar
- #'(lambda (s) (member i s))
- rests)))
- collect i)))
- FOO
- CL-USER> (foo '(1 2 3 4) '(3 4) '(4 5))
- (1 2)
- CL-USER>
Объяснение кода листинга программы
В этом коде определен функтор foo
, который принимает произвольное количество списков в качестве аргументов.
Внутри функции используется let
для создания переменной rests
, которая содержит все аргументы, кроме первого.
Затем используется loop
для итерации по каждому из списков, кроме первого.
when
проверяет, является ли текущий список пустым. Если это не так, он удаляет все вхождения числа i
из списка, используя remove
и mapcar
.
Если после этого список все еще не пустой, i
добавляется в результат, используя collect
.
В конце функция возвращает результат, который в данном случае будет списком, содержащим только число 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д