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