summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--h26.hs5
-rw-r--r--h27.hs8
2 files changed, 13 insertions, 0 deletions
diff --git a/h26.hs b/h26.hs
new file mode 100644
index 0000000..4497e8c
--- /dev/null
+++ b/h26.hs
@@ -0,0 +1,5 @@
+combination :: Int -> [a] -> [[a]]
+combination 0 _ = [[]]
+combination _ [] = []
+combination c (x:xs) = (map (x:) (combination (c-1) xs)) ++ (combination c xs)
+
diff --git a/h27.hs b/h27.hs
new file mode 100644
index 0000000..68efa73
--- /dev/null
+++ b/h27.hs
@@ -0,0 +1,8 @@
+combination :: Int -> [a] -> [[a]]
+combination 0 _ = [[]]
+combination _ [] = []
+combination c (x:xs) = (map (x:) (combination (c-1) xs)) ++ (combination c xs)
+
+group :: [Int] -> [a] -> [a]
+group [] xs = [[xs]]
+group (n:ns) xs = map ((combination n) . head) group (n:ns) xs