aboutsummaryrefslogtreecommitdiff
path: root/aoc2021/day-08/day-08.rkt
diff options
context:
space:
mode:
authorH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
committerH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
commit8777ff071f7bb37631baa7b6717ad29961e50911 (patch)
tree6d59c4ed58e454b960339c3d1151f0a879e8d7cb /aoc2021/day-08/day-08.rkt
parent6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff)
downloadgleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz
gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip
sorting by language
Diffstat (limited to 'aoc2021/day-08/day-08.rkt')
-rw-r--r--aoc2021/day-08/day-08.rkt64
1 files changed, 0 insertions, 64 deletions
diff --git a/aoc2021/day-08/day-08.rkt b/aoc2021/day-08/day-08.rkt
deleted file mode 100644
index 6476eae..0000000
--- a/aoc2021/day-08/day-08.rkt
+++ /dev/null
@@ -1,64 +0,0 @@
-#lang racket
-(require threading
- list-utils
- "../../jj-aoc.rkt")
-
-(struct trial-data (signal output) #:transparent)
-
-(define (string->sets s)
- (~> s string-split (map (λ~> string->list list->set) _)))
-
-(define data
- (for/list ([l (in-lines (open-day 8))] #:unless (equal? l ""))
- (~> l (string-split _ " | ") (map string->sets _) (apply trial-data _))))
-
-;; part 1
-(for*/sum ([trial (in-list data)] [output (in-list (trial-data-output trial))]
- #:when (ormap (λ~> (= (set-count output))) '(2 3 4 7)))
- 1)
-
-;; part 2
-(define (matching-pattern len trial)
- (define solution-set
- (for*/list ([signal (in-list (trial-data-signal trial))] #:when (= (set-count signal) len))
- signal))
- (match solution-set
- [(list s) s]
- [s (apply set-intersect s)]))
-
-(define (determine-arrangement t)
- (let* ([pattern-1 (matching-pattern 2 t)]
- [pattern-4 (matching-pattern 4 t)]
- [pattern-7 (matching-pattern 3 t)]
- [pattern-8 (matching-pattern 7 t)]
- [pattern-shared-235 (matching-pattern 5 t)]
- [pattern-3 (set-union pattern-1 pattern-shared-235)]
- [pattern-9 (set-union pattern-4 pattern-shared-235)]
- [pattern-shared-069 (matching-pattern 6 t)]
- [pattern-just-f (set-subtract pattern-shared-069 pattern-shared-235)]
- [pattern-just-e
- (set-subtract pattern-8 (set-union pattern-4 pattern-shared-235 pattern-shared-069))]
- [pattern-2 (set-union (set-subtract pattern-3 pattern-just-f) pattern-just-e)]
- [pattern-just-c (set-subtract (set-intersect pattern-4 pattern-7) pattern-just-f)]
- [pattern-6 (set-subtract pattern-8 pattern-just-c)]
- [pattern-5 (set-subtract pattern-6 pattern-just-e)]
- [pattern-0 (set-union (set-subtract pattern-8 pattern-shared-235) pattern-shared-069)])
- (~> (list pattern-0
- pattern-1
- pattern-2
- pattern-3
- pattern-4
- pattern-5
- pattern-6
- pattern-7
- pattern-8
- pattern-9)
- enumerate
- make-hash)))
-
-(for/sum ([trial (in-list data)])
- (~>> trial
- trial-data-output
- (map (λ~>> (hash-ref (determine-arrangement trial))))
- (apply ~a)
- string->number))