From: Thomas Hafner Date: 2007-01-26T20:05:08+09:00 Subject: cartesian product of arrays Hello, did I miss some standard library function? Anyway, then I'll do it on my own: def cartprod(*args) result = [[]] while [] != args t, result = result, [] b, *args = args t.each do |a| b.each do |n| result << a + [n] end end end result end Example: cartprod([1,2],[3,4,5],[6,7,8]) => [[1, 3, 6], [1, 3, 7], [1, 3, 8], [1, 4, 6], [1, 4, 7], [1, 4, 8], [1, 5, 6], [1, 5, 7], [1, 5, 8], [2, 3, 6], [2, 3, 7], [2, 3, 8], [2, 4, 6], [2, 4, 7], [2, 4, 8], [2, 5, 6], [2, 5, 7], [2, 5, 8]] Regards Thomas