advent-of-code/12022/04/04_2.fnl

20 lines
569 B
Fennel

(io.input "input")
(var sum1 0)
(var sum2 0)
(each [line (io.lines)]
(let [pattern "(%d+)-(%d+),(%d+)-(%d+)"
[ri1 rf1 ri2 rf2]
(icollect [_ n (-> line (string.match pattern) (table.pack) (ipairs))]
; (-> ...) equivalent to:
; (ipairs (table.pack (string.match line pattern)))]
(tonumber n))]
(when (or (and (>= ri1 ri2) (<= rf1 rf2))
(and (>= ri2 ri1) (<= rf2 rf1)))
(set sum1 (+ sum1 1)))
(when (and (>= rf1 ri2) (<= ri1 rf2))
(set sum2 (+ sum2 1)))))
(print "part 1" sum1)
(print "part 2" sum2)