Объединить два списка в один - Lisp
Формулировка задачи:
- (
- defun fun (lst1 lst2)
- (
- cond
- ((null lst1) nil)
- ((null lst2) nil)
- (T
- (
- cons (car lst1)
- (
- cons (car lst2)
- (
- cons (fun (cdr lst1) (cdr lst2)) nil)
- )
- )
- )
- )
- )
- )
- (print (fun '(a b c d e f g) '(1 2 3 4 5 6 7)))
Решение задачи: «Объединить два списка в один»
- (defun fun (lst1 lst2)
- (cond ((null lst1) nil)
- ((null lst2) nil)
- (T (cons (list (car lst1)(car lst2)) (fun (cdr lst1) (cdr lst2))))))
- ==> fun
- (fun '(1 2 3 4 5) '(a b c d e))
- ==> ((1 a) (2 b) (3 c) (4 d) (5 e))
Объяснение кода листинга программы
В данном коде представлена функция с именем fun, которая принимает два аргумента типа список (lst1 и lst2). Если один из списков (lst1 или lst2) является пустым (т.е. null), то функция возвращает nil. В противном случае, функция возвращает новый список, который получается путем объединения элементов двух списков. Первый элемент нового списка является результатом применения функции car к первому элементу первого списка и второму элементу второго списка. Оставшиеся элементы нового списка получаются путем рекурсивного вызова функции fun с аргументами, полученными путем вызова функции cdr к соответствующим элементам исходных списков. Пример использования функции: (fun '(1 2 3 4 5) '(a b c d e)) Результат выполнения: ((1 a) (2 b) (3 c) (4 d) (5 e))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д