Lisp - 可变大小的列表列表

Clá*_*iro 1 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 (...)
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*vin 5

这样做你想要的吗?

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

  • 如果问题可能是家庭作业,那么提供完整解决方案是一个很好的传统...... (3认同)