在球拍中创建列表
问题描述:
我是球拍编程的新手,我正在处理一个给出数字列表的问题,我必须列出不同数字组合的列表。在球拍中创建列表
喜欢的东西:
(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)' –