2011-11-29 53 views
1

我必须使用lisp来代表棋盘游戏。要做到这一点,我必须创建一个构建电路板的函数。Lisp - 可变尺寸列表清单

该函数接收一个整数,该整数表示原始列表所具有的子列表的数量。这些子列表中的每一个都有不同的规模,以3 * n的比例增长。作为一个例子,如果功能被称为数字3,它将创建一个列表与3个子列表,第一个3位置,第二个6和第三个9。

此外,每个位置需要用'*'初始化。

要做到这一点,我认为我必须做一个递归调用清单,但我似乎无法做到这一点。我试图用'dotimes'循环来做到这一点,但我没有任何成就。

到目前为止,我有:

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

至极创建主列表,但我怎么能代表内部使用大小合适的子列表?

+1

正在做作业吗? –

+0

这是一个学校项目。 –

回答

5

这是做你想做的吗?

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

我要测试它。 –

+3

如果问题是可能的作业,这是一个很好的传统,不给一个完整的解决方案... –

+1

@Rainer Joswig - 作业标签只是在我给出我的答案后才添加。 –

3

将数字列表映射到子列表的长度。为这个映射使用一个函数,它返回用初始元素初始化的右列表。