diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-02 16:59:12 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-03 15:50:58 +0200 |
| commit | a9cfe1ddecbb711cd5b3bc9d544e77197869dcd9 (patch) | |
| tree | 130c8d58923288f29766474140028a44fb1cb8a7 /src/aoc_2022/day01.clj | |
Solve day01
Diffstat (limited to 'src/aoc_2022/day01.clj')
| -rw-r--r-- | src/aoc_2022/day01.clj | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/aoc_2022/day01.clj b/src/aoc_2022/day01.clj new file mode 100644 index 0000000..c26c87c --- /dev/null +++ b/src/aoc_2022/day01.clj @@ -0,0 +1,34 @@ +(ns aoc-2022.day01) +(require '[clojure.java.io :as io]) + +(defn split-by [delim acc coll] + (let [head (first coll) + tail (rest coll)] + (if (nil? head) + [acc] + (cond + (= delim head) (cons (reverse acc) (split-by delim [] tail)) + :else (split-by delim (cons head acc) tail))))) + +(defn task1 [rows] + (->> rows + (map (fn [row] (if (not (empty? row)) (Long/valueOf row) ""))) + (split-by "" []) + (map (fn [calories] (reduce + calories))) + (reduce max))) + +(defn task2 [rows] + (->> rows + (map (fn [row] (if (not (empty? row)) (Long/valueOf row) ""))) + (split-by "" []) + (map (fn [calories] (reduce + calories))) + sort + reverse + (take 3) + (reduce +))) + +(with-open [rdr (io/reader "resources/day01_actual.txt")] + (let [rows (line-seq rdr)] + (do + (println "task1:" (task1 rows)) + (println "task2:" (task2 rows))))) |
