From 41f9a5899396236262b99d4efde1d64f82f48e6a Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Sat, 12 Dec 2020 22:41:31 -0800 Subject: [PATCH] Day 13. --- input/13.txt | 2 ++ src/13.rkt | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 input/13.txt create mode 100644 src/13.rkt diff --git a/input/13.txt b/input/13.txt new file mode 100644 index 0000000..91abf0b --- /dev/null +++ b/input/13.txt @@ -0,0 +1,2 @@ +1000104 +41,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,659,x,x,x,x,x,x,x,23,x,x,x,x,13,x,x,x,x,x,19,x,x,x,x,x,x,x,x,x,29,x,937,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,17 diff --git a/src/13.rkt b/src/13.rkt new file mode 100644 index 0000000..decd2b7 --- /dev/null +++ b/src/13.rkt @@ -0,0 +1,21 @@ +#lang curly-fn racket + +(require math/number-theory + "../lib.rkt") + +(define input (problem-input 13)) +(define timestamp (string->number (first input))) +(define busses (map string->number (string-split (second input) ","))) +(define ids (filter identity busses)) + +(define part1 + (let* ([waits (map #{- (* % (add1 (quotient timestamp %))) timestamp} ids)] + [wait (apply min waits)] + [index (index-of waits wait)]) + (* wait (list-ref ids index)))) + +(define part2 + (let ([offsets (filter-map #{and %1 (negate %2)} busses (range (length busses)))]) + (solve-chinese offsets ids))) + +(show-solution part1 part2)