advent-of-code/2023/src/day09.clj
Adam Jeniski 898532fd6d golf
2023-12-09 12:37:23 -05:00

21 lines
618 B
Clojure

(ns day09 (:require
[core :refer [comp> get-puzzle-input mapvf reducef split-spaces]]))
(defn generate-pyramid [nums]
(loop [pyramid [nums]]
(let [last-line (peek pyramid)]
(if (every? zero? last-line)
pyramid
(recur (conj pyramid (mapv - (rest last-line) last-line)))))))
(defn solve [reduction]
(reduce + (map (comp> split-spaces (mapvf parse-long) generate-pyramid reverse
(reducef reduction 0))
(get-puzzle-input 9))))
;; part 1
(solve (fn [num line] (+ (peek line) num)))
;; part 2
(solve (fn [num line] (- (first line) num)))