以下命令从列表中产生组合,但仅在向前的方向上:
(combinations '(0 0 1 1) 2)
'((0 0) (0 1) (0 1) (0 1) (0 1) (1 1))
它不产生组合(1 0)。
相似地:
(combinations '(0 0 1 1) 3)
'((0 0 1) (0 0 1) (0 1 1) (0 1 1))
它不会产生(1 0 0)(1 0 1)等
如何使此命令输出所有可能的组合?
按照定义(强调我的意思):
“ ...组合是从集合中选择项目的一种方式,这样(与排列不同)选择的顺序无关紧要。”
换句话说,(0 1)
和(1 0)
是等效的,并且该combinations
过程已经列出了给定输入的所有可能组合。也许您对某些列表的笛卡尔积感兴趣?
(cartesian-product '(0 1) '(0 1))
=> '((0 0) (0 1) (1 0) (1 1))
(cartesian-product '(0 1) '(0 1) '(0 1))
=> '((0 0 0) (0 0 1) (0 1 0) (0 1 1) (1 0 0) (1 0 1) (1 1 0) (1 1 1))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句