Из данного одноуровнего списка построить список списков его элементов - Lisp

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

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

Напишите функцию, которая из данного одноуровнего списка строит список списков его элементов, например, (a b) -> ((a) (b)).
(defun list_of_lists (lst)
  (if (null lst) nil 
    (list (cons(car lst) nil)(cons(cadr lst) nil)(cons(caddr lst) nil))
  )  
)
 
(list_of_lists '(5 2 3))
 
==> ((5) (2) (3))
Как это сделать для списка любой длины?

Решение задачи: «Из данного одноуровнего списка построить список списков его элементов»

textual
Листинг программы
(defun list-v (w)
  (loop for a in w collect `(,a)))
 
> (list-v '(a b c))
((A) (B) (C))

Объяснение кода листинга программы

В данном коде определён функционал list-v, который принимает в качестве аргумента w одноуровневый список. Начиная с этого момента и до конца функции, в цикле loop происходит обход каждого элемента списка w. Внутри цикла, для каждого элемента a, с помощью collect, осуществляется сборка нового списка, который содержит элемент a. В итоге, после завершения цикла, получается список списков, содержащий все элементы исходного списка w. Пример использования функции:

(list-v '(a b c)) ((A) (B) (C))

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


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

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

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