2010-08-05 13 views
7

मैं सरणियों के परिवर्तनशील रूप से एकल आइटम के सभी संयोजनों को खोजने के लिए देख रहा हूँ। मैं कैसे रूबी में इस करते हैं?रूबी सरणियों के परिवर्तनशील के उत्पाद ढूँढना

को देखते हुए दो सरणियों, मैं इस तरह Array.product उपयोग कर सकते हैं:

groups = [] 
groups[0] = ["hello", "goodbye"] 
groups[1] = ["world", "everyone"] 

combinations = groups[0].product(groups[1]) 

puts combinations.inspect 
# [["hello", "world"], ["hello", "everyone"], ["goodbye", "world"], ["goodbye", "everyone"]] 

कैसे जब समूहों सरणियों के परिवर्तनशील होते हैं इस कोड काम कर सकता है?

उत्तर

13
groups = [ 
    %w[hello goodbye], 
    %w[world everyone], 
    %w[here there] 
] 

combinations = groups.first.product(*groups.drop(1)) 

p combinations 
# [ 
# ["hello", "world", "here"], 
# ["hello", "world", "there"], 
# ["hello", "everyone", "here"], 
# ["hello", "everyone", "there"], 
# ["goodbye", "world", "here"], 
# ["goodbye", "world", "there"], 
# ["goodbye", "everyone", "here"], 
# ["goodbye", "everyone", "there"] 
# ] 
+1

वाह, धन्यवाद। आप, या किसी को, संभवतः समझा सकते हैं कि यह कैसे काम करता है? –

+2

यह वास्तव में क्या करता है इसका एक स्पष्टीकरण भी सहायक होगा, और शायद ओपी के कोड के बेहतर डिज़ाइन का कारण बनता है ... – jtbandes

+1

@ ओली: 'ऐरे # उत्पाद' कई सरणी तर्क के रूप में ले सकता है, इसलिए यह मूल रूप से 'समूह' कर रहा है [0] .product (समूहों [1], समूहों [2], ...) ' – jtbandes