1

我有一个组合列表:

('a'..'z').to_a.combination(3)

但我想生成一个具有相同起始集的新列表('a'..'z')

('a'..'z').to_a.combination(5)

有没有办法让 rubycombination(3)​​ 在新的集合中使用旧的集合combination(5),这样可以节省一些时间?

4

2 回答 2

4

我不知道是否有或没有任何简单的方法可以重用已经生成的选项,但不要忘记再添加两个“位置”会大大增加组合的数量(Wolfram Alpha) ——有案例中的组合5比案例多 25 倍3

到目前为止,无论您对数据什么,处理时间都将增加 25 倍,这将超过 Ruby 为您准备组合所花费的时间。

于 2012-05-29T00:06:50.913 回答
2

有,但我怀疑你会节省很多时间,除非你在 Rubinius 或其他一些非本地实现上运行。在参考实现中,Array#combination它是用紧密的 C 语言编写的,我非常怀疑为了重用这些结果而需要做的附加、循环和差异处理会比原生combination使用的要少。

于 2012-05-28T23:56:19.617 回答