我有一系列组合:
('a'..'z').to_a.combination(3)
但我想生成一个包含相同起始集('a'..'z')
的新列表:
('a'..'z').to_a.combination(5)
有没有办法让红宝石在新的combination(3)
集中使用旧集combination(5)
,这样可以节省一些时间?
答案 0 :(得分:4)
我不知道是否有任何简单的方法可以重新使用已经生成的选项,但不要忘记添加两个“位置”drastically grows the number of combinations (Wolfram Alpha) - 有25次5
案例中的更多组合比3
案例更多。
到目前为止,无论你花费多少时间处理数据,处理时间的25倍将会占据Ruby为你准备组合所花费的时间。
答案 1 :(得分:2)
有,但我怀疑你会节省很多时间,除非你在Rubinius或其他非本地实现上运行。在参考实现中,Array#combination
以紧凑的C语言编写,我非常怀疑为了重用这些结果而需要执行的附加和循环以及差异的附加处理将小于本地{ {1}}用完了。