Lisp - 可变大小的列表列表

时间:2011-11-29 18:24:51

标签: lisp common-lisp

我必须使用lisp代表棋盘游戏。要做到这一点,我必须创建一个构建板的功能。

此函数接收一个整数,表示原始列表所具有的子列表的数量。这些子列表中的每一个都具有以3 * n比例增长的不同大小。 例如,如果使用数字3调用函数,它将创建一个包含3个子列表的列表,第一个包含3个位置,第二个包含6个,第三个包含9个。

此外,每个职位都需要用'*。

初始化

要做到这一点,我想我必须对make-list进行递归调用,但我似乎无法做到这一点。我试图使用'dotimes'循环来做到这一点,但我没有任何成功。

到目前为止,我有:

(defun faz-tabuleiro (n_aneis)
    (make-list n_aneis :initial-element (...)

创建主列表,但是如何用正确的大小来表示内部的子列表?

2 个答案:

答案 0 :(得分:5)

这样做你想要的吗?

(defun make-table (n)
  (loop :for i :from 1 :to n
        :collect (make-list (* i 3) :initial-element "*")))

答案 1 :(得分:3)

映射作为子列表长度的数字列表。使用此映射的函数返回使用initial元素初始化的右侧列表。