Code Challenge: Combinations
Given an array of arrays of possible values, enumerate all combinations that can occur, preserving order. For instance:
Given: [[1,2,3], [4,5,6], [7,8,9]]
, calculate the same result as the code below, but do so with an arbitrary size array:
combos = [] [1,2,3].each do |v1| [4,5,6].each do |v2| [7,8,9].each do |v3| combos << [v1, v2, v3] end end end combos
Entries can be written using one or more functions, and may optionally be written as a class extension (i.e. Array).
Points will be given on technique, performance/speed, and difficulty of the program style. Winner receives a gold medal made of pure awesome. Submit a comment with a link to a gist of your code to enter. Comments are moderated, so your entry is safe until a winner is chosen.