Combinations: Difference between revisions

Content added Content deleted
No edit summary
Line 1,023: Line 1,023:


In the induction step, either ''x'' is not in the result and the recursion proceeds with the rest of the list ''xs'', or it is in the result and then we only need ''m-1'' elements.
In the induction step, either ''x'' is not in the result and the recursion proceeds with the rest of the list ''xs'', or it is in the result and then we only need ''m-1'' elements.

Shorter version of the above:
<lang haskell>import Data.List (tails)

comb :: Int -> [a] -> [[a]]
comb 0 _ = [[]]
comb m l = concat [map (x:) (comb (m-1) xs) | (x:xs) <- tails l]</lang>


To generate combinations of integers between 0 and ''n-1'', use
To generate combinations of integers between 0 and ''n-1'', use