From b7faf7c96193044b80604db5a7cd6a6a296fed5c Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Thu, 10 Dec 2020 00:03:11 -0800 Subject: [PATCH] Day 10. --- input/10.txt | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/10.rkt | 24 ++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 input/10.txt create mode 100644 src/10.rkt diff --git a/input/10.txt b/input/10.txt new file mode 100644 index 0000000..3286c1b --- /dev/null +++ b/input/10.txt @@ -0,0 +1,92 @@ +47 +61 +131 +15 +98 +123 +32 +6 +137 +111 +25 +28 +107 +20 +99 +36 +2 +97 +88 +124 +138 +75 +112 +52 +122 +78 +46 +110 +41 +64 +63 +16 +93 +104 +105 +91 +27 +45 +119 +14 +1 +65 +62 +118 +37 +79 +77 +19 +71 +35 +130 +69 +5 +44 +9 +48 +125 +136 +103 +140 +53 +126 +106 +55 +129 +139 +87 +68 +21 +85 +76 +31 +113 +12 +100 +24 +96 +82 +13 +70 +72 +86 +26 +117 +58 +132 +114 +40 +54 +133 +51 +92 diff --git a/src/10.rkt b/src/10.rkt new file mode 100644 index 0000000..8f09885 --- /dev/null +++ b/src/10.rkt @@ -0,0 +1,24 @@ +#lang curly-fn racket + +(require "../lib.rkt") + +(define input (sort (map string->number (problem-input 10)) <=)) + +(define part1 + (let* ([input (cons 0 input)] + [diffs (for/list ([i (rest input)] [j input]) (- i j))] + [ones (count #{= % 1} diffs)] + [threes (add1 (count #{= % 3} diffs))]) + (* ones threes))) + +(define arrangements + (for*/fold ([arrs (hash 0 1)]) + ([joltage input] + [i (range 1 4)]) + (let ([prev (hash-ref arrs (- joltage i) 0)]) + (hash-update arrs joltage #{+ % prev} 0)))) + +(define part2 + (hash-ref arrangements (last input))) + +(show-solution part1 part2)