summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Zhao <ztuowen@gmail.com>2015-03-19 00:13:40 +0800
committerJoe Zhao <ztuowen@gmail.com>2015-03-19 00:13:40 +0800
commitf07a21427d4d15ff5c9c98b528e83eb60867bc98 (patch)
tree3f3a2cdbef82537246283b1825935b246aaa20cd
parent3ae71a6adaf7cb9249a1a610c228e8ac84afab6d (diff)
downloadh99-f07a21427d4d15ff5c9c98b528e83eb60867bc98.tar.gz
h99-f07a21427d4d15ff5c9c98b528e83eb60867bc98.tar.bz2
h99-f07a21427d4d15ff5c9c98b528e83eb60867bc98.zip
+26 /27
-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