Объединить два списка в один - Lisp

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Стоит задача сформировать из двух списков один. Допустим, даны (a b c d e f g h) и (1 2 3 4 5 6 7 8), тогда результат должен быть ((a 1) (b 2) (c 3) (d 4) (e 5) (f 6) (g 7) (h 8))
(
    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)))
Чувствую, что ответ где-то близко, но не могу понять, что не так.

Решение задачи: «Объединить два списка в один»

textual
Листинг программы
(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))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы