diff options
author | Leah Neukirchen <leah@vuxu.org> | 2021-12-11 22:03:37 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2021-12-11 22:03:37 +0100 |
commit | 0f872eb46fac8b9835c8ae2b39c084404b05663c (patch) | |
tree | acc2b5c44f86491fc54f8a19d6c59161f468c98a /day10.clj | |
parent | 1ae501bbbfd059310d22e5bc40918d4c38a0034c (diff) | |
download | adventofcode2021-0f872eb46fac8b9835c8ae2b39c084404b05663c.tar.gz adventofcode2021-0f872eb46fac8b9835c8ae2b39c084404b05663c.tar.xz adventofcode2021-0f872eb46fac8b9835c8ae2b39c084404b05663c.zip |
day10
Diffstat (limited to 'day10.clj')
-rw-r--r-- | day10.clj | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/day10.clj b/day10.clj new file mode 100644 index 0000000..b838b0d --- /dev/null +++ b/day10.clj @@ -0,0 +1,31 @@ +(ns org.vuxu.aoc2021.day10 + (:require [clojure.string :as str])) + +(defn fix [f x] + (loop [x x] + (let [fx (f x)] + (if (= x fx) x (recur fx))))) + +(let [[incomplete corrupted] + (->> (slurp "day10") + (str/split-lines) + (map (partial fix #(str/replace % #"\(\)|\[\]|\{\}|<>" ""))) + ((juxt filter remove) (partial re-find #"[)}>\]]")))] + (def incomplete incomplete) + (def corrupted corrupted)) + +(def part1 + (->> incomplete + (map (partial some #{\) \] \} \>})) + (map {\) 3 \] 57 \} 1197 \> 25137}) + (apply +))) +;; => 216297 + +(def part2 + (->> corrupted + (map reverse) + (map (partial map {\( 1 \[ 2 \{ 3 \< 4})) + (map (partial reduce #(+ (* %1 5) %2) 0)) + sort + (#(nth % (bit-shift-right (count corrupted) 1))))) +;; => 2165057169 |