2011-11-29 50 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

將數字列表映射到子列表的長度。爲這個映射使用一個函數,它返回用初始元素初始化的右列表。