From e61dd6837d90ca6389d74b43e682757ed9b84427 Mon Sep 17 00:00:00 2001 From: Adam Jeniski Date: Mon, 13 Jan 2025 00:16:40 -0500 Subject: [PATCH] add chunk/window utils for seqs --- shared/clj/src/core.clj | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/shared/clj/src/core.clj b/shared/clj/src/core.clj index 30b8436..3a7d68f 100644 --- a/shared/clj/src/core.clj +++ b/shared/clj/src/core.clj @@ -141,6 +141,30 @@ :last (first sorted-nums)} (rest sorted-nums)))) + +(defn chunks [n coll] + (loop [colls [] + left coll + i n] + (if (<= i 0) + (apply map list colls) + (recur (conj colls (take-nth n left)) + (rest left) + (dec i))))) + +(defn windows [n coll] + (let [v (vec coll)] + (->> coll + (take (- (count v) (dec n))) + (map-indexed (fn [i _] + (range i (+ i n)))) + (mmap v)))) + +(comment + (def data (map str (map (partial + 2) (range 12)))) + (chunks 3 data) + (windows 8 data)) + ;; Math things (defn square [n] (* n n))