【问题标题】:Ruby: do not do certain combinations with array elementsRuby:不要与数组元素进行某些组合
【发布时间】:2012-05-28 23:48:48
【问题描述】:

我有一个组合列表:

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

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

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

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

【问题讨论】:

    标签: ruby arrays combinations ruby-1.9.3


    【解决方案1】:

    我不知道是否有任何简单的方法可以重用已经生成的选项,但不要忘记添加两个“位置”drastically grows the number of combinations (Wolfram Alpha)——组合多了 25 倍在5 的情况下比在3 的情况下。

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

    【讨论】:

    • 点头,再好不过了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2017-04-30
      • 2017-01-31
      • 1970-01-01
      • 2021-08-18
      • 2021-06-24
      • 1970-01-01
      相关资源
      最近更新 更多