【发布时间】:2013-01-23 03:15:55
【问题描述】:
我需要一个函数来获取(项目列表)列表,并枚举每个列表中每个项目的所有可能组合。所以
someCombo :: [[a]] -> [[a]]
someCombo = undefined
如果我有这样的事情
[
[a1,b1],
[a2,b2,c2],
[a3,b3]
]
我想吐出这样的答案,其中每个列表的每个元素都与每个其他列表的每个元素匹配。大概在这种情况下,最终列表中会有 12 个元素。
[
[a1,a2,a3],[a1,a2,b3],[a1,b2,a3],[a1,b2,b3],...,[b1,c2,b3]
]
主参数中可以有任意数量的列表。这看起来应该很简单,但我无法完全理解它。我可以为两个或三个列表做这件事,但我不能让它递归地工作任意数量的列表。哦,我不关心结果列表的顺序,只要我有全部 12 个(或其他)。
如果有人好奇这是做什么用的,这是我需要实现的算法的最后一部分锻炼。我认为这可能会为我每次锻炼节省几分钟。为了做到这一点,我需要列举所有可能的训练,每个训练涉及一组特定的盘子,然后找到每个举重的盘子顺序组合,从而减少洗牌次数。
【问题讨论】:
-
你想用谷歌搜索“笛卡尔”或“外积”
标签: list haskell combinations