USING: arrays grouping io.encodings.utf8 io.files kernel math.parser math.rectangles math.statistics sequences splitting ; IN: aoc.4 : pair>rect ( {x,w} -- r ) dup differences [ first 1 2array ] bi@ ; : input ( -- input ) "~/factor/aoc/4/4.in" utf8 file-lines [ "-," split [ dec> ] map 2 [ pair>rect ] map ] map ; : split-pair ( pair -- x y ) [ first ] [ last ] bi ; : fully-contains? ( {r1,r2} -- ? ) dup split-pair (rect-union) swap member? ; : part1 ( -- n ) input [ fully-contains? ] count ; : part2 ( -- n ) input [ split-pair contains-rect? ] count ;