【问题标题】:combinatorics in ruby with hashesruby 中的组合与哈希
【发布时间】:2014-01-14 10:27:44
【问题描述】:

当您想要简洁地进行状态组合时,是否有内置函数约定

鉴于以下情况:

{
  animal: [:dog, :cat],
  disposition: [:grumpy, :hungry, :sleepy]
}

我想做:

[
  {animal: :dog, disposition: :grumpy},
  {animal: :dog, disposition: :hungry},
  {animal: :dog, disposition: :sleepy},
  {animal: :cat, disposition: :grumpy},
  {animal: :cat, disposition: :hungry},
  {animal: :cat, disposition: :sleepy}
]

采用任意数量的输入状态,即超过 2 个。

其他人一定在我之前以优雅的方式解决了这个问题?

Python 有一个数组方法here

【问题讨论】:

    标签: ruby hash combinatorics


    【解决方案1】:

    初始哈希:

    a={  
      animal: [:dog, :cat],  
      disposition: [:grumpy, :hungry, :sleepy]  
    }  
    b= a[:animal].product(a[:disposition]).collect do |c|
      {animal: c[0], disposition: c[1]}
    end
    

    【讨论】:

      【解决方案2】:

      This SO answer 应该可以工作。

      [{:animal=>:dog, :disposition=>:grumpy}, {:animal=>:dog, :disposition=>:hungry}, {:animal=>:dog, :disposition=>:sleepy}, {:animal=>:cat, :disposition=>:grumpy}, {:animal=>:cat, :disposition=>:hungry}, {:animal=>:cat, :disposition=>:sleepy}]

      【讨论】:

      • 组合 = input.values[0].product(*input.values[1..-1]).map{|p|哈希[input.keys.zip p]}
      猜你喜欢
      • 2014-10-28
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2014-11-13
      • 2014-06-15
      • 2015-05-07
      • 1970-01-01
      • 2011-08-26
      相关资源
      最近更新 更多