From: David Palm Date: 2008-03-11T20:06:00+09:00 Subject: Combinatorics and permutations? Help? Hi, I have a problem involving combinatorics and permutations and my brain hurts. The problem: I have a hash of products in input. I then build an array of equivalent products for each input product. I end up with an array such as this: { :input_prod_1 => [:p1_1, :p1_2, ... , p1_x], :input_prod_2 => [:p2_1, :p2_1, ..., p2_y], ... :input_prod_m => [:pm_1, :pm_1, ..., pm_z] } I need all the unique combinations of each product from the first group with each of the second. For example: given: [ [:p1, :p2], [:p3, p4] ] I need to obtain: [ [:p1, :p3], [:p1, :p4], [:p2, :p3], [:p2, :p4] ] Given: [ [:p1], [:p2, :p3, :p4] ] I need: [ [:p1, :p2], [:p1, :p3], [:p1, :p4] ] The number of input products is in the order of tens (max); the same goes for the number of equivalent products. This means the total number of partitions is pretty large and I need to weed out the equivalent ones soon/fast enough to reduce the total number. I've been making attempts with the permutation gem all morning; looks like it's doing the "right thing", but frankly my maths skills are lacking and I can't really figure out how to use it (should I?). Also: order is not important for the result arrays. This is easy, right? :-/