diff options
Diffstat (limited to 'H27.hs')
-rw-r--r-- | H27.hs | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -0,0 +1,13 @@ +import Control.Arrow +combination :: Int -> [a] -> [([a],[a])] +combination 0 xs = [([],xs)] +combination _ [] = [] +combination c (x:xs) = (map ((x:).fst &&& snd) (combination (c-1) xs)) ++ (map (fst &&& (x:).snd) (combination c xs)) + +group :: [Int] -> [a] -> [[[a]]] +group [] _ = [[]] +-- group [n] xs = map ((:[]).fst) (combination n xs) +group (n:ns) xs = concatMap (\(comb,rest) -> map (comb:) (group ns rest)) (combination n xs) + +group' [] = const [[]] +group' (n:ns) = concatMap (uncurry $ (. group' ns) . map . (:)) . combination n |