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

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

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

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

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

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

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

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

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

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


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

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

5   голосов , оценка 4 из 5

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

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

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