USING: io.backend io.encodings.utf8 io.files kernel math.parser ranges sequences sets splitting ; IN: advent-of-code.day-04 : get-input-one ( -- seq ) "vocab:advent-of-code/day-04/_input/one.txt" normalize-path utf8 file-lines ; : parse-range ( string -- range ) "-" split first2 [ dec> ] bi@ [a..b] ; : split-pair ( string -- seq ) "," split [ parse-range ] map ; : overlaps? ( seq seq -- ? ) [ subset? ] [ swap subset? ] 2bi or ; : ranges-overlap? ( line -- ? ) split-pair first2 overlaps? ; : count-overlaps ( seq -- n ) [ ranges-overlap? ] count ; : solve-part-one ( -- solution ) get-input-one count-overlaps ; : count-intersections ( seq -- n ) [ split-pair first2 intersects? ] count ; : solve-part-two ( -- solution ) get-input-one count-intersections ;