aboutsummaryrefslogtreecommitdiffstats
path: root/day10/part1.clj
diff options
context:
space:
mode:
Diffstat (limited to 'day10/part1.clj')
-rw-r--r--day10/part1.clj28
1 files changed, 28 insertions, 0 deletions
diff --git a/day10/part1.clj b/day10/part1.clj
new file mode 100644
index 0000000..2bef696
--- /dev/null
+++ b/day10/part1.clj
@@ -0,0 +1,28 @@
+(def to-closing {\{ \} \( \) \[ \] \< \>})
+(def to-score {\) 3 \] 57 \} 1197 \> 25137})
+
+(defn check-line [input]
+ (loop [open [] in input]
+ (cond
+ (empty? in)
+ nil
+ (and (contains? #{\} \) \] \>} (first in))
+ (not= (to-closing (first open)) (first in)))
+ (first in)
+ :else
+ (recur
+ (if (contains? #{\{ \( \[ \<} (first in))
+ (concat [(first in)] open)
+ (rest open))
+ (rest in)
+ ))))
+
+(->> (slurp "./in")
+ (clojure.string/split-lines)
+ (mapv vec)
+ (mapv check-line)
+ (filter some?)
+ (mapv to-score)
+ (apply +)
+ (println))
+