diff --git a/2017/src/day09.clj b/2017/src/day09.clj new file mode 100644 index 0000000..7147e84 --- /dev/null +++ b/2017/src/day09.clj @@ -0,0 +1,34 @@ +(ns day09 + (:require [clojure.string :as str] + core + input-manager)) + +(def input (input-manager/get-input-raw 2017 9)) + +(defn sum-recursive-depths [s sum idx depth] + (if (>= idx (count s)) + sum + (condp = (.charAt s idx) + \, (recur s sum (inc idx) depth) + \{ (recur s + (+ sum depth) + (inc idx) + (inc depth)) + \} (recur s + sum + (inc idx) + (max (dec depth) 0))))) + +(defn exlam-canceler [s] (str/replace s #"!." "")) +(def angle-bracket-regex #"<[^>]*>") + +(-> input + exlam-canceler + (str/replace angle-bracket-regex "") + (sum-recursive-depths 0 0 1)) + +(->> input + exlam-canceler + (re-seq angle-bracket-regex) + (map #(- (count %) 2)) + (reduce +))