#lang curly-fn racket (require "scripts/aoc.rkt") ;; solution for day 3 (define priorities (string->list "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")) (define (part1 input) (for/sum ([line (in-list input)]) (define-values [left right] (split-at line (/ (length line) 2))) (~>> (set-intersect left right) (set-first) (index-of priorities)))) (define (part2 input) (match input ['() 0] [(list* a b c rst) (+ (~>> (set-intersect a b c) (set-first) (index-of priorities)) (part2 rst))])) (define (parse fname) (map string->list (file->lines fname))) (module+ main (define input (parse "inputs/3")) (answer 3 1 (time (part1 input))) (answer 3 2 (time (part2 input))) (displayln "meow"))