: input ( -- seq ) "input8.txt" ascii file-lines first " " split [ parse-number ] map ; : next-leaf ( seq -- seq' leaf ) [ [ 0 = ] find drop 2 * dup [ 2 - swap ] [ 2 + ] [ 1 + ] tri ] [ nth + ] [ 3dup subseq [ snip append ] dip ] tri [ [ [ 1 - ] change-nth ] keep ] dip ; : get-nodes ( nums -- seq ) [ [ [ [ next-leaf , ] [ drop , return ] recover ] forever ] with-return ] { } make nip ; : part1 ( -- ) input get-nodes [ 2 tail sum ] map-sum . ;