USING: io.encodings.utf8 io.files kernel math math.ranges sequences sets ; IN: aoc.3 : input ( -- i ) "~/factor/aoc/3/3.in" utf8 file-lines ; : halves ( s -- {s,s} ) dup length 2/ cut { } 2sequence ; : priorities ( -- p ) 97 122 [a,b] 65 90 [a,b] append ; : intersection-score ( seq -- n ) intersection first priorities index 1 + ; : part1 ( -- n ) input [ halves intersection-score ] map-sum ; : 3chunk ( seq -- seq ) { } swap [ dup empty? ] [ 3 cut [ suffix ] dip ] until drop ; : part2 ( -- n ) input 3chunk [ intersection-score ] map-sum ;