#lang curly-fn racket (require "scripts/aoc.rkt") ;; solution for day 4 (define (part1 input) (for*/sum ([line (in-list input)] [u (in-value (apply is:union line))] #:when (member u line)) 1)) (define (part2 input) (for*/sum ([line (in-list input)] [i (in-value (apply is:intersect line))] #:unless (zero? (is:count i))) 1)) (define (parse fname) (for/list ([line (in-list (file->lines fname))]) (map #{~>> (string-split % "-") (map string->number) (apply is:make-range)} (string-split line ",")))) (module+ main (define input (parse "inputs/4")) (answer 4 1 (time (part1 input))) (answer 4 2 (time (part2 input))) (displayln "meow"))