This commit is contained in:
Adam Jeniski 2023-12-09 08:50:09 -05:00
parent 4018ae20dd
commit a29e47b30f

37
2023/src/day09.clj Normal file
View File

@ -0,0 +1,37 @@
(ns day09
(:require [core :refer [get-puzzle-input]]
[clojure.string :as str]))
(defn parse-line [line]
(->> (str/split line #" ")
(mapv #(Long/parseLong %))))
(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 get-missing-num [nums reduction]
(let [pyrimid (generate-pyramid nums)]
(loop [acc 0
line-idx (dec (count pyrimid))]
(if (< line-idx 0)
acc
(recur (reduction (get pyrimid line-idx) acc)
(dec line-idx))))))
(defn solve [reduction]
(->> (get-puzzle-input 9)
(mapv parse-line)
(mapv #(get-missing-num % reduction))
(reduce +)))
;; part 1
(solve (fn [line num] (+ (peek line) num)))
;; part 2
(solve (fn [line num] (- (first line) num)))