2010-08-05 7 views
7

Estoy buscando para encontrar todas las combinaciones de elementos individuales de un número variable de matrices. ¿Cómo hago esto en Ruby?Encontrar el producto de un número variable de matrices de Ruby

Dados dos matrices, que pueden utilizar Array.product así:

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"]] 

¿Cómo podría este trabajo código cuando grupos contiene un número variable de matrices?

Respuesta

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

Wow, gracias. ¿Podría usted, o alguien, posiblemente explicar cómo funciona esto? –

+2

Una explicación de lo que esto realmente hace sería útil también, y probablemente conduzca a un mejor diseño del código del OP ... – jtbandes

+1

@Ollie: 'Array # product' puede tomar múltiples matrices como argumentos, así que esto es básicamente hacer' groups [0] .product (groups [1], groups [2], ...) ' – jtbandes

Cuestiones relacionadas