2014-01-26 00:04:22 +00:00
|
|
|
|
2016-02-27 02:33:05 +00:00
|
|
|
; "To split a collection you can use the partition function"
|
2012-08-04 10:11:33 +00:00
|
|
|
(= '((0 1) (2 3)) (__ 2 (range 4)))
|
|
|
|
|
|
2016-02-27 02:33:05 +00:00
|
|
|
; "But watch out if there are not enough elements to form n sequences"
|
2012-08-04 10:11:33 +00:00
|
|
|
(= '(__) (partition 3 [:a :b :c :d :e]))
|
|
|
|
|
|
2016-02-27 02:33:05 +00:00
|
|
|
; "You can use partition-all to include any leftovers too"
|
2012-08-04 10:11:33 +00:00
|
|
|
(= __ (partition-all 3 (range 5)))
|
|
|
|
|
|
2016-02-27 02:33:05 +00:00
|
|
|
; "If you need to, you can start each sequence with an offset"
|
2012-08-04 10:11:33 +00:00
|
|
|
(= '((0 1 2) (5 6 7) (10 11 12)) (partition 3 __ (range 13)))
|
|
|
|
|
|
2016-02-27 02:33:05 +00:00
|
|
|
; "Consider padding the last sequence with some default values..."
|
2012-08-04 10:11:33 +00:00
|
|
|
(= '((0 1 2) (3 4 5) (6 :hello)) (partition 3 3 [__] (range 7)))
|
|
|
|
|
|
2016-02-27 02:33:05 +00:00
|
|
|
; "... but notice that they will only pad up to the given sequence length"
|
|
|
|
|
(= '((0 1 2) (3 4 5) __) (partition 3 3 [:these :are "my" "words"] (range 7)))
|