Monday, October 11, 2010

java cartesian product

just had to create a cartesian product in java when i dont know how many elements will be being joined.

private List<String> cartProduct(List<List<String>> fragments)
    {
        if (fragments.size()<2)
        {
            return fragments.get(0);
        }
       
        List<String> frag1 = fragments.get(0);
        List<String> frag2 = fragments.get(1);
        List<String> newFragments = new ArrayList<String>();
        for (String s1 : frag1)
        {
            for (String s2 : frag2)
            {
                newFragments.add(s1 + " " + s2);
            }
        }
       
        fragments.set(1, newFragments);
        fragments.remove(0);
        return cartProduct(fragments);
    }

Friday, October 8, 2010