Из данного одноуровнего списка построить список списков его элементов - 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))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д