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

Summary:
Author:
Mode:
Body: