aboutsummaryrefslogtreecommitdiff
path: root/aoc2021/day-10
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-10
parent6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff)
downloadgleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz
gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip
sorting by language
Diffstat (limited to 'aoc2021/day-10')
-rw-r--r--aoc2021/day-10/day-10.rkt57
1 files changed, 0 insertions, 57 deletions
diff --git a/aoc2021/day-10/day-10.rkt b/aoc2021/day-10/day-10.rkt
deleted file mode 100644
index ea1b389..0000000
--- a/aoc2021/day-10/day-10.rkt
+++ /dev/null
@@ -1,57 +0,0 @@
-#lang racket
-
-(require math/statistics
- threading
- "../../jj-aoc.rkt")
-
-(define chunks (port->lines (open-day 10 2021)))
-
-(define (opening-bracket? c)
- (member c (string->list "([{<")))
-
-(define (matching-brackets? c-left c-right)
- (member (string c-left c-right) '("()" "[]" "{}" "<>")))
-
-(define (parse-brackets lst [acc '()])
- (cond
- [(empty? lst) acc]
- [(opening-bracket? (first lst)) (parse-brackets (rest lst) (cons (first lst) acc))]
- [(matching-brackets? (first acc) (first lst)) (parse-brackets (rest lst) (rest acc))]
- [else (get-score (first lst))]))
-
-;; part 1
-(define (get-score c)
- (match (string c)
- [")" 3]
- ["]" 57]
- ["}" 1197]
- [">" 25137]))
-
-(define (score-invalid-string chunk)
- (match (parse-brackets (string->list chunk))
- [(? list?) 0]
- [n n]))
-
-(for/sum ([chunk (in-list chunks)]) (score-invalid-string chunk))
-
-;; part 2
-(define (completion-score lst)
- (for/fold ([score 0]) ([c (in-list lst)])
- (define val
- (match (string c)
- ["(" 1]
- ["[" 2]
- ["{" 3]
- ["<" 4]))
- (+ (* 5 score) val)))
-
-(define (score-incomplete-string chunk)
- (match (parse-brackets (string->list chunk))
- [(? list? lst) (completion-score lst)]
- [n 0]))
-
-(~>> (for*/list ([chunk (in-list chunks)]
- [score (in-value (score-incomplete-string chunk))]
- #:when (> score 0))
- score)
- (median <))