blob: 4e020cb0ace35ebd3de20837d281588464bce0d7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
(defun corrupt (str)
(if-match (@pos . @len) (search-str-tree str '("(]" "(}" "(>"
"[)" "[}" "[>"
"{)" "{]" "{>"
"<)" "<]" "<}"))
pos))
(defun reduxe (str)
(while-match (@pos . @len) (search-str-tree str '("()" "[]" "{}" "<>"))
(del [str pos..(ssucc pos)]))
str)
(defun solve-part-one (: (name "input"))
(with-stream (s (open-file name))
(let ((score 0))
(whilet ((line (get-line s)))
(let ((rline (reduxe line)))
(iflet ((pos (corrupt rline)))
(inc score
(ecaseq [rline (succ pos)]
(#\) 3)
(#\] 57)
(#\} 1197)
(#\> 25137))))))
score)))
(defun solve-part-two (: (name "input"))
(flow
(file-get-lines name)
(mapcar reduxe)
(remove-if [orf corrupt empty])
(mapcar (opip (mapcar (relate "([{<" #(1 2 3 4)))
(rpoly 5)))
(sort)
[callf ref use [chain len (lop trunc 2)]]))
|