diff options
author | H.J <thechairman@thechairman.info> | 2024-10-09 11:36:55 -0400 |
---|---|---|
committer | H.J <thechairman@thechairman.info> | 2024-10-09 11:36:55 -0400 |
commit | 8777ff071f7bb37631baa7b6717ad29961e50911 (patch) | |
tree | 6d59c4ed58e454b960339c3d1151f0a879e8d7cb /aoc2023-racket/day-04/day-04.rkt | |
parent | 6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff) | |
download | gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip |
sorting by language
Diffstat (limited to 'aoc2023-racket/day-04/day-04.rkt')
-rw-r--r-- | aoc2023-racket/day-04/day-04.rkt | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/aoc2023-racket/day-04/day-04.rkt b/aoc2023-racket/day-04/day-04.rkt deleted file mode 100644 index 7a357c5..0000000 --- a/aoc2023-racket/day-04/day-04.rkt +++ /dev/null @@ -1,40 +0,0 @@ -#lang racket - -(require advent-of-code - data/applicative - data/either - data/monad - megaparsack - megaparsack/text - threading) - -(struct card (n wins)) - -(define card/p - (do (string/p "Card") - (many/p space/p) - [n <- integer/p] - (string/p ":") - (many/p space/p) - [winners <- (many-until/p integer/p #:sep (many/p space/p) #:end (try/p (string/p " | ")))] - (many/p space/p) - [has <- (many+/p integer/p #:sep (many/p space/p))] - (pure (card n (set-count (set-intersect (first winners) has)))))) - -(define raw-cards (~> (open-aoc-input (find-session) 2023 4 #:cache #true) port->lines)) - -;; part 1 -(for/sum ([raw-card (in-list raw-cards)] - #:do [(match-define (success (card _ wins)) (parse-string card/p raw-card))] - #:unless (= wins 0)) - (expt 2 (sub1 wins))) - -;; part 2 -(for/fold ([counts (for/hash ([n (in-inclusive-range 1 (length raw-cards))]) - (values n 1))] - #:result (apply + (hash-values counts))) - ([raw-card (in-list raw-cards)] - #:do [(match-define (success (card n wins)) (parse-string card/p raw-card))]) - (define bonus-range (inclusive-range (+ n 1) (+ n wins))) - (define won-cards (hash-ref counts n)) - (foldl (λ (n acc) (hash-update acc n (curry + won-cards))) counts bonus-range)) |