Построение итерационных программ для обработки списков - Lisp
Формулировка задачи:
Решение задачи: «Построение итерационных программ для обработки списков»
(defun F (L1 L2) (setq newL '()) (loop for x in L1 do ; цикл по элементам 1 списка (if (not (member x newL)) (setq newL (append newL (list x))) ) ) (loop for y in L2 do ; цикл по элементам 2 списка (if (not (member y newL)) (setq newL (append newL (list y))) ) ) (prin1 newL) ) (F '(R A B C D) '(B C K D)) ---> (R A B C D K)
Объяснение кода листинга программы
В этом коде определена функция F, которая принимает два аргумента — списки L1 и L2.
Сначала объявлена пустая переменная newL. Затем используется цикл loop для перебора элементов первого списка L1. Для каждого элемента x проверяется, есть ли он уже в newL с помощью функции member. Если элемента нет в newL, то он добавляется в конец списка newL с помощью функции append.
После этого используется второй цикл loop для перебора элементов второго списка L2. Аналогично первому циклу проверяется, есть ли элемент в newL и, если его нет, он добавляется в конец списка.
В конце функция prin1 используется для вывода списка newL.
Используя функцию F и передавая ей списки '(R A B C D) и '(B C K D), мы получаем результат (R A B C D K).