#lang curly-fn racket (require "scripts/aoc.rkt" math/number-theory) ;; solution for day 6 (define *fudge* 1e-10) (define (do-race time dist) (match-define (list lower upper) (quadratic-solutions 1 (- time) dist)) (~> (- (floor (- upper *fudge*)) (ceiling (+ lower *fudge*))) add1 inexact->exact)) (define (part1 input) (for/product ([time (in-list (first input))] [dist (in-list (second input))]) (do-race time dist))) (define (number-concat l) (~>> (map number->string l) (apply string-append) string->number)) (define (part2 input) (apply do-race (map number-concat input))) (define (parse fname) (map #{map string->number (rest (string-split %))} (file->lines fname))) ; (dbg (part1 (parse "inputs/6-test1"))) ; (error) (module+ main (define input (parse "inputs/6")) (answer 6 1 (time (part1 input))) (answer 6 2 (time (part2 input))) (displayln "meow"))