Calculating the nth Term of a Cartesian Product
I recently had to calculate the nth term for a Cartesian Product.  I wanted to avoid generating the entire Cartesian Product in order to jump to the nth term.  I wanted a way to derive the nth term.
For example, let's say I have two arrays:
The Cartesian Product of the above two arrays can be:
Now, when I ask for the 3rd term of the above cartesian product, I want to receive
My solution is below:
Example:
The next trick is to turn
Suggestions for how to improve this?
For example, let's say I have two arrays:
a = [
  [1,2,3],
  [4,5]
]
The Cartesian Product of the above two arrays can be:
[[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]
Now, when I ask for the 3rd term of the above cartesian product, I want to receive
[3,4].  Again, I want to do this without calculating the entire set.My solution is below:
def combo(arrays, num)
  arrays.map do |a|
    v = a[num % a.length]
    num /= a.length
    v
  end
end
Example:
term = combo(a, 2)
puts term.inspect
# [2,4]
The next trick is to turn
[2,4] back into 2.Suggestions for how to improve this?