1
我想寫一個函數,返回2集(列表)的笛卡爾乘積的'地圖'功能的幫助,我希望返回列表中的每一對元素都是一個向量。計劃 - 帶有'地圖'的笛卡爾產品?
(cartesian-product '(1 2 3) '(a b))
'(#(3 a) #(3 b) #(2 a) #(2 b) #(1 a) #(1 b))
我的初始想法是使一個單獨的過程,使一個矢量出元件C(常數)在組2和元件n的組1,其中元素n對於每次迭代變化,然後進行映射此單獨的函數與組2因此,例如,如果使用上述列表(代碼示例中),我會得到3個不同的向量從這個單獨的功能:
#'(a 1) #'(a 2) #'(a 3)
並在此使用地圖時我會得到結果:
'(#'(a 1) #'(a 2) #'(a 3) #'(b 1) #'(b 2) #'(b 3))
但我意識到,我反而得到的結果看起來是這樣的:
'((#'(a 1) #'(a 2) #'(a 3)) (#'(b 1) #'(b 2) #'(b 3)))
,因爲單獨的函數必須是遞歸的,它必須在完成時返回一個列表。
現在我又回到原點了,我沒有想法。請幫助... 應該指出,這是學校裏的功課,我不允許使用任何預定義的功能,除了簡單的像:
cdr,car,cons,map etc
儘量保持它作爲基本的可能。我只使用方案也不像一個月這樣下去容易對我:)
如果你不能使用'apply' /'append',你就會有向量的列表的列表中手動合併爲載體的一個列表,刪除'apply' /'append'行,看看我的意思。 –
謝謝你!像魅力一樣工作! – Schytheron