我有一个组合列表:
('a'..'z').to_a.combination(3)
但我想生成一个具有相同起始集的新列表('a'..'z')
:
('a'..'z').to_a.combination(5)
有没有办法让 rubycombination(3)
在新的集合中使用旧的集合combination(5)
,这样可以节省一些时间?
我有一个组合列表:
('a'..'z').to_a.combination(3)
但我想生成一个具有相同起始集的新列表('a'..'z')
:
('a'..'z').to_a.combination(5)
有没有办法让 rubycombination(3)
在新的集合中使用旧的集合combination(5)
,这样可以节省一些时间?
我不知道是否有或没有任何简单的方法可以重用已经生成的选项,但不要忘记再添加两个“位置”会大大增加组合的数量(Wolfram Alpha) ——有案例中的组合5
比案例多 25 倍3
。
到目前为止,无论您对数据做什么,处理时间都将增加 25 倍,这将超过 Ruby 为您准备组合所花费的时间。
有,但我怀疑你会节省很多时间,除非你在 Rubinius 或其他一些非本地实现上运行。在参考实现中,Array#combination
它是用紧密的 C 语言编写的,我非常怀疑为了重用这些结果而需要做的附加、循环和差异处理会比原生combination
使用的要少。