diff --git a/6.rkt b/6.rkt new file mode 100644 index 0000000..ae64182 --- /dev/null +++ b/6.rkt @@ -0,0 +1,45 @@ +#lang curly-fn racket + +(require "scripts/aoc.rkt") + +;; solution for day 6 + +(define (do-race total-time hold-time) + (define rem-time (- total-time hold-time)) + (* rem-time hold-time)) + +(define (part1 input) + (apply + * + (for/list ([time (in-list (first input))] [dist (in-list (second input))]) + (for/fold ([cnt 0]) ([hold (in-range time)]) + (define res (do-race time hold)) + (if (> res dist) + (add1 cnt) + cnt))))) + +(define (cvt l) + (string->number (apply string-append (map number->string l)))) + +(define (part2 input) + (define time (cvt (first input))) + (define dist (cvt (second input))) + (for/fold ([cnt 0]) ([hold (in-range time)]) + (define res (do-race time hold)) + (if (> res dist) + (add1 cnt) + cnt))) + +(define (parse fname) + (match-define (list time-str dist-str) (file->lines fname)) + (list (map string->number (rest (string-split time-str))) + (map string->number (rest (string-split dist-str))))) + +; (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")) diff --git a/inputs/6 b/inputs/6 new file mode 100644 index 0000000..f0fce7b --- /dev/null +++ b/inputs/6 @@ -0,0 +1,2 @@ +Time: 46 85 75 82 +Distance: 208 1412 1257 1410 diff --git a/inputs/6-test1 b/inputs/6-test1 new file mode 100644 index 0000000..28f5ae9 --- /dev/null +++ b/inputs/6-test1 @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200