Résumé
Compte tenu HASHTABLE où certaines valeurs sont des tableaux, comment puis-je obtenir un tableau de hachages pour toutes les combinaisons possibles?Toutes les combinaisons de hachage de tableaux
Test Case
options = { a:[1,2], b:[3,4], c:5 }
p options.self_product
#=> [{:a=>1, :b=>3, :c=>5},
#=> {:a=>1, :b=>4, :c=>5},
#=> {:a=>2, :b=>3, :c=>5},
#=> {:a=>2, :b=>4, :c=>5}]
Lorsque la valeur d'une clé particulière est pas un tableau, il doit simplement être inclus tel quel dans chaque hachage, comme si elle était enveloppée dans un tableau.
Motivation
J'ai besoin pour générer des données de test donné une série de valeurs différentes options. Bien que je puisse utiliser [1,2].product([3,4],[5])
pour obtenir le produit cartésien de toutes les valeurs possibles, je préférerais utiliser des hachages pour étiqueter à la fois mon entrée et ma sortie afin que le code soit plus explicite que de simplement utiliser des indices de tableau.
Pouvez-vous expliquer comment ce n'est pas une copie de la question liée? Voulez-vous dire quand une valeur n'est pas un tableau? – sawa
@sawa Non, pour la question liée, il n'y aurait que deux résultats: '[{a: 1, b: 3}, {a: 2, b: 4}]'. La question liée concerne les valeurs appariées, pas les produits. – Phrogz