From 626f97de8f63a61c7e4e8a120e50005cb35f9578 Mon Sep 17 00:00:00 2001 From: Ignacy Moryc Date: Sat, 4 Aug 2012 12:11:33 +0200 Subject: [PATCH] Add koans for partition function --- ideaboard.txt | 1 - resources/koans.clj | 9 ++++++++- src/koans/20_partition.clj | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/koans/20_partition.clj diff --git a/ideaboard.txt b/ideaboard.txt index 7e1f71d..710bac9 100644 --- a/ideaboard.txt +++ b/ideaboard.txt @@ -15,7 +15,6 @@ Particular Functions fnil - creating_a_function juxt - creating_a_function constantly - creating_a_function -partition flatten frequencies diff --git a/resources/koans.clj b/resources/koans.clj index 41ce830..cb1a8a8 100644 --- a/resources/koans.clj +++ b/resources/koans.clj @@ -196,4 +196,11 @@ ] "___" [#(.toUpperCase %) ] - }]] + }] + ["20_partition" {"__" [partition + [:a :b :c] + '((0 1 2) (3 4)) + 5 + :hello + (6 :this :are) + ]}]] diff --git a/src/koans/20_partition.clj b/src/koans/20_partition.clj new file mode 100644 index 0000000..1d21dd0 --- /dev/null +++ b/src/koans/20_partition.clj @@ -0,0 +1,18 @@ +(meditations + "To split a collection you can use the partition function" + (= '((0 1) (2 3)) (__ 2 (range 4))) + + "But watch out if there is not enough elements to form n sequences" + (= '(__) (partition 3 [:a :b :c :d :e])) + + "You can use partition-all to also get partitions with less then n elements" + (= __ (partition-all 3 (range 5))) + + "If you need to, you can start each sequence with an offset" + (= '((0 1 2) (5 6 7) (10 11 12)) (partition 3 __ (range 13))) + + "Consider padding the last sequence with some default values.." + (= '((0 1 2) (3 4 5) (6 :hello)) (partition 3 3 [__] (range 7))) + + ".. but notice that they will only pad up to given sequence length" + (= '((0 1 2) (3 4 5) __) (partition 3 3 [:this :are "my" "words"] (range 7))))