我是球拍編程的新手,我正在處理一個給出數字列表的問題,我必須列出不同數字組合的列表。在球拍中創建列表
喜歡的東西:
(combine (list 3 1 2)) => (list
(list 31 32 33)
(list 21 22 3)
(list 11 12 13))
如何在球拍實現這一目標? 謝謝
我是球拍編程的新手,我正在處理一個給出數字列表的問題,我必須列出不同數字組合的列表。在球拍中創建列表
喜歡的東西:
(combine (list 3 1 2)) => (list
(list 31 32 33)
(list 21 22 3)
(list 11 12 13))
如何在球拍實現這一目標? 謝謝
只需與iterators and comprehension一起玩來實現一個返回列表清單以及一些算術運算以獲得正確結果的笛卡爾積。試試這個:
(for/list ((i '(3 2 1)))
(for/list ((j '(1 2 3)))
(+ (* 10 i) j)))
或者,使用更多的標準結構(在學生語言):
(map (lambda (i)
(map (lambda (j)
(+ (* 10 i) j))
'(1 2 3)))
'(3 2 1))
無論哪種方式,它按預期工作:
=> '((31 32 33) (21 22 23) (11 12 13))
我覺得有一個錯字在預期的輸出中,它應該是'(list 21 22 23)' –