Paste: aoc12
        
	
	
	
		| Author:  | jon | 
		| Mode:  | factor | 
		| Date:  | Tue, 12 Dec 2017 14:59:01 | 
	
	Plain Text |
	
	
USING: accessors assocs kernel math path-finding sequences sets
splitting ;
IN: aoc.2017.12
: parse-input ( lines -- assoc )
    H{ } [
        [ 
            [ " <-> ," split harvest unclip ] dip
            set-at
        ] curry each
    ] keep ;
: bfs ( from assoc -- visited )
    <bfs> [ [ f ] dip find-path drop ] keep in-closed-set>> ;
: p1 ( lines -- n )
    parse-input [ "0" ] dip bfs cardinality ;
: p2 ( lines -- n )
    parse-input
    [ 0 ] dip [ keys empty? ] [
        [ [ keys first ] keep bfs members ]
        [ [ delete-at ] curry each ] bi
        1 +
    ] bi-curry until ;
	
	
		New Annotation