diff options
author | Hunky Jimpjorps <thechairman@thechairman.info> | 2022-12-09 23:47:58 -0500 |
---|---|---|
committer | Hunky Jimpjorps <thechairman@thechairman.info> | 2022-12-09 23:47:58 -0500 |
commit | b625e4b1d4ef4f6e912b9edd062f579909faa3b1 (patch) | |
tree | eeda6d0b478dfaee1958a8eda6cd0bc5e703768b /2020/day-15 | |
parent | 25f7a077a4d13359a6953b4cfdaa44d80cd66ced (diff) | |
download | gleam_aoc-b625e4b1d4ef4f6e912b9edd062f579909faa3b1.tar.gz gleam_aoc-b625e4b1d4ef4f6e912b9edd062f579909faa3b1.zip |
2020 day 15 complete, day 16 in progress
Diffstat (limited to '2020/day-15')
-rw-r--r-- | 2020/day-15/day-15.rkt | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/2020/day-15/day-15.rkt b/2020/day-15/day-15.rkt new file mode 100644 index 0000000..4dd9e88 --- /dev/null +++ b/2020/day-15/day-15.rkt @@ -0,0 +1,22 @@ +#lang rackjure + +(define first-numbers '(2 20 0 4 1 17)) + +(define number-hash + (for/hash ([(xs i) (in-indexed (drop-right first-numbers 1))]) + (values xs (add1 i)))) + +(define starting-round (~> number-hash hash-values (apply max _) (+ 2))) + +(define (find-spoken-number-at end) + (for/fold ([ns number-hash] [previous-number (last first-numbers)] #:result previous-number) + ([rnd (inclusive-range starting-round end)]) + (define next-spoken-number + (match (ns previous-number) + [#f 0] + [n (- (sub1 rnd) n)])) + (values (ns previous-number (sub1 rnd)) next-spoken-number))) + +(find-spoken-number-at 2020) + +(find-spoken-number-at 30000000)
\ No newline at end of file |