diff options
Diffstat (limited to 'day10/part1.clj')
-rw-r--r-- | day10/part1.clj | 28 |
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)) + |