[Haskell-cafe] Combinations

Bernd Holzmüller bernd.holzmueller at ics-ag.de
Tue Jun 6 08:06:52 EDT 2006


This should do:

combinations :: [[a]] -> [[a]]
combinations [] = [[]]
combinations [[x]] = [[x]]
combinations ([] : xxs) = combinations xxs
combinations ((h : tl) : xxs) = [h : r | r <- combinations xxs] ++
                if null tl then [] else combinations (tl : xxs)

Bernd

developer at imaginando.net schrieb:
> Hi,
>
> I need a functions which takes as argument a list of lists like this one:
>
> [[1,2],[3],[4]]
>
> and gives me a list of list with all the possible combinations like this one:
>
> [[1,3,4],[2,3,4]]
>
> In this case there are only 2 combinations but if there was more than one
> element in the other lists the results were much more.
>
> I'm a little stuck in this simple problem.
>
> First i was thinking in cartesian product but then i realized that i may
> not be what i really need.
>
> Any tip?
>
> Many thx,
>
> Nuno Santos
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>   

-- 
Bernd Holzmüller
Dipl.-Inf.

ICS AG
Sonnenbergstraße 13
D-70184 Stuttgart
Tel.: +49 (0) 711 / 2 10 37 - 643
Fax:  +49 (0) 711 / 2 10 37 - 653
Mobile: +49 (0) 151 / 17449 534
mailto:bernd.holzmueller at ics-ag.de
www.ics-ag.de



More information about the Haskell-Cafe mailing list