Paste: AoC 2025 day 5
| Author: | annikapaprika |
| Mode: | factor |
| Date: | Fri, 5 Dec 2025 22:54:41 |
Plain Text |
USING: accessors kernel math math.order math.parser ranges
sequences sequences.extras sets sorting splitting ;
IN: 2025.05
: parse ( seq seq -- ranges ns )
[ [ "-" split1 [ dec> ] bi@ [a..b] ] map ]
[ [ dec> ] map ] bi* ;
: part-1 ( ranges ns -- n )
[ swap [ in? ] with any? ] with count ;
M: range union ( r1 r2 -- r )
over not [ nip ] [
[ drop from>> ] [ [ last ] bi@ max ] 2bi [a..b]
] if ;
: part-2 ( ranges ns -- n )
drop sort [ 0 ] dip [
2dup intersects? [ union ] [ [ length + ] dip ] if
] 1reduce length + ;
New Annotation