add day 10
parent
e6afd7fe60
commit
18fdc49ec2
@ -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))
|
||||
|
@ -0,0 +1,30 @@
|
||||
(def to-closing {\{ \} \( \) \[ \] \< \>})
|
||||
(def to-score {\) 1 \] 2 \} 3 \> 4})
|
||||
|
||||
(defn check-line [input]
|
||||
(loop [open [] in input]
|
||||
(cond
|
||||
(empty? in)
|
||||
(map to-closing open)
|
||||
(and (contains? #{\} \) \] \>} (first in))
|
||||
(not= (to-closing (first open)) (first in)))
|
||||
nil
|
||||
: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 (partial reduce #(+ (* 5 %1) (to-score %2)) 0))
|
||||
(sort)
|
||||
(#(get (vec %) (quot (count %) 2)))
|
||||
(println)
|
||||
)
|
||||
|
Loading…
Reference in New Issue