2014-01-14 142 views
1

是否有一个内置函数约定当你想要做状态的组合简洁?红宝石组合与哈希

考虑以下几点:

{ 
    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

回答

1

This SO answer应该工作的阵列方式。

[{:动物=>:狗,:配置=>:脾气暴躁},{:动物=>:狗, :配置=>:饿},{:动物=>:狗,:配置=>:sleepy}, {:animal =>:cat,:disposition =>:grumpy},{:animal =>:cat, :处置=>:饥饿},{:animal =>:cat,:disposition =>:困倦}]

+0

组合= input.values [0]。产品(* input.values [1 ..- 1]){地图| p |。哈希[input.keys.zip p]} – xxjjnn

2

INTIAL散列:

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

我喜欢这个.. +1 –