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 /aoc2020/day-07 | |
parent | 6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff) | |
download | gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip |
sorting by language
Diffstat (limited to 'aoc2020/day-07')
-rw-r--r-- | aoc2020/day-07/day-07.rkt | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/aoc2020/day-07/day-07.rkt b/aoc2020/day-07/day-07.rkt deleted file mode 100644 index f2a1ffe..0000000 --- a/aoc2020/day-07/day-07.rkt +++ /dev/null @@ -1,46 +0,0 @@ -#lang racket -(require advent-of-code - threading - rebellion/collection/entry - rebellion/collection/multidict) - -(define raw-rules (~> (open-aoc-input (find-session) 2020 7) (port->string) (string-split "\n"))) - -(define (split-rule r) - (match-define (list head tail) (string-split (string-trim r #px" bags?.") " bags contain ")) - (~>> tail - (regexp-split #px"( bags?,\\s)" _) - (map (λ~> (regexp-match* #px"(\\d+) (\\w+ \\w+)" _ #:match-select rest))) - append* - (map (λ~> (match _ - [(list n c) (list (string->symbol c) (string->number n))] - ['() '()]))) - (cons (string->symbol head) _))) - -(define rules-multidict - (for*/multidict ([ln (in-list raw-rules)] #:do [(match-define (list* from tos) (split-rule ln))] - [to (in-list tos)]) - (entry from to))) - -;; part 1 -(define (bags-that-eventually-contain target) - (for/fold ([holders (set)]) ([rule (in-multidict-entries rules-multidict)]) - (match rule - [(entry outside (list (== target) _)) - (set-union (set-add holders outside) (bags-that-eventually-contain outside))] - [_ holders]))) - -(define part-1 (set-count (bags-that-eventually-contain '|shiny gold|))) -(~a "Part 1: " part-1) -;; (aoc-submit (find-session) 2020 7 1 part-1) - -;; part 2 -(define (bags-that-are-contained-by target) - (for/sum ([holding (in-multidict-entries rules-multidict)]) - (match holding - [(entry (== target) (list held n)) (+ n (* n (bags-that-are-contained-by held)))] - [_ 0]))) - -(define part-2 (bags-that-are-contained-by '|shiny gold|)) -(~a "Part 2: " part-2) -;; (aoc-submit (find-session) 2020 7 1 part-2) |