Написать функцию объединения множеств - Lisp
Формулировка задачи:
Решение задачи: «Написать функцию объединения множеств»
(defun f (v w) (mapcar 'atoi (acad_strlsort (mapcar 'chr (vl-string->list (apply 'strcat (mapcar 'itoa (append v w)))))))) (f '(1 2 12 13) '(5 3 3 1 2 2)) ==> (1 1 1 1 2 2 2 2 3 3 3 5)
Объяснение кода листинга программы
В этом коде представлена функция f, которая принимает два аргумента v и w.
Сначала мы используем mapcar с функцией atoi, чтобы преобразовать строки в числа. Затем мы сортируем список с помощью acad_strlsort.
Далее мы используем mapcar с функцией chr, чтобы преобразовать числа обратно в строки. Затем мы преобразуем список строк в список с помощью vl-string->list.
Затем мы используем apply с функцией strcat, чтобы объединить строки в одну строку. Затем мы используем mapcar с функцией itoa, чтобы преобразовать строку обратно в числа.
Наконец, мы используем append, чтобы объединить два списка вместе.
В результате, если мы применим функцию f к v =(1 2 12 13)иw = (5 3 3 1 2 2), мы получим (1 1 1 1 2 2 2 2 3 3 3 5).