Wszystkie kombinacje skrótów tablic [duplikat]

To pytanie ma już odpowiedź tutaj:

Włączanie tablicy tablic w tablicę skrótów w Ruby 7 odpowiedzi

Podsumowani
Biorąc pod uwagę skrót, w którym niektóre wartości są tablicami, jak mogę uzyskać tablicę skrótów dla wszystkich możliwych kombinacji?

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

Jeśli wartość określonego klucza nie jest tablicą, należy po prostu dołączyć ją taką, jaka jest w każdym wynikowym haszu, tak samo, jakby była zapakowana w tablic

Motywacj
Muszę wygenerować dane testowe, biorąc pod uwagę różne wartości dla różnych opcji. Chociaż mogę używać[1,2].product([3,4],[5]), aby uzyskać produkt kartezjański wszystkich możliwych wartości, wolałbym używać skrótów, aby móc oznaczyć zarówno moje dane wejściowe, jak i wyjściowe, aby kod był bardziej zrozumiały niż użycie indeksów tablicowyc

questionAnswers(2)

yourAnswerToTheQuestion