(io.input "input") (var sum1 0) (var sum2 0) (each [line (io.lines)] (let [(a b c d) (string.match line "(%d+)-(%d+),(%d+)-(%d+)") ri1 (tonumber a) rf1 (tonumber b) ri2 (tonumber c) rf2 (tonumber d)] (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))))) ; (when (or (and (>= rf1 ri2) (<= ri1 ri2)) ; (and (>= rf2 ri1) (<= ri2 ri1))) ; (set sum2 (+ sum2 1))))) (print "part 1" sum1) (print "part 2" sum2)