Объединить два списка в один - 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))
Листинг программы
  1. (
  2. defun fun (lst1 lst2)
  3. (
  4. cond
  5. ((null lst1) nil)
  6. ((null lst2) nil)
  7. (T
  8. (
  9. cons (car lst1)
  10. (
  11. cons (car lst2)
  12. (
  13. cons (fun (cdr lst1) (cdr lst2)) nil)
  14. )
  15. )
  16. )
  17. )
  18. )
  19. )
  20. (print (fun '(a b c d e f g) '(1 2 3 4 5 6 7)))
Чувствую, что ответ где-то близко, но не могу понять, что не так.

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

textual
Листинг программы
  1. (defun fun (lst1 lst2)
  2.     (cond ((null lst1) nil)
  3.           ((null lst2) nil)
  4.           (T (cons (list (car lst1)(car lst2)) (fun (cdr lst1) (cdr lst2))))))
  5.  
  6.  
  7. ==> fun
  8.  
  9. (fun '(1 2 3 4 5) '(a b c d e))
  10.  
  11. ==> ((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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы