功能

2009-12-10 418 views
0

我試圖使用方案編寫一個函數f,需要一個號碼n和功能g並返回長度n的名單列表,但根據布爾根據圖案由g指示。例如,函數f應該取n 3和函數g,它使列表中的每個第三項都成立。它應該返回此:功能

(list (list true true false) 
     (list true true false) 
     (list true true false)) 

我不知道從哪裏開始的這一點,所以任何幫助或建議將不勝感激。謝謝!

+2

該問題是不明確的和不明確的。假設所需的功能是(f n g)。 g採取什麼論據?是長度爲n的'(f n g)'還是長度爲n的'(f n g)'的元素,還是所有長度爲n的列表? – outis 2009-12-10 06:39:10

回答

1

這個關鍵看起來像使用map

總之,map接受函數和列表,並將函數應用於該列表,返回修改後的列表。

要做到這一點,正如我假設你不想要直接解決方案,我首先要構建你的列表清單(只需使用累加器 - 倒計時 - 只要需要就製作清單,並使用conslistquote其他一切

然後簡單地套用地圖(大概兩次,這取決於你如何實現您的解決方案),以列表的列表(例如列表l和功能fn:。(map fn (car l))與復發cdrlcons的結果一起)

祝你好運!希望這可以幫助!

1

我不太關注你正在嘗試做什麼,但除了map,你可能會發現build-list是有用的。 build-list需要一個數字和一個過程,從0到該數字的範圍小於1,並將您的過程映射到該範圍。例如

> (build-list 5 (lambda (x) (* x x))) 
(0 1 4 9 16)