diff options
author | Leah Neukirchen <leah@vuxu.org> | 2022-12-04 16:50:43 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2022-12-04 16:50:43 +0100 |
commit | fe9b273cc83c4b6448c0e78c76b6dd2060522f14 (patch) | |
tree | 5a8073eab36546eca582b07ca294324a093824f1 /day03.rkt | |
parent | 1539d9a155be2f3e43a33f41befd00edc5c41b54 (diff) | |
download | adventofcode2022-fe9b273cc83c4b6448c0e78c76b6dd2060522f14.tar.gz adventofcode2022-fe9b273cc83c4b6448c0e78c76b6dd2060522f14.tar.xz adventofcode2022-fe9b273cc83c4b6448c0e78c76b6dd2060522f14.zip |
day03
Diffstat (limited to 'day03.rkt')
-rw-r--r-- | day03.rkt | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/day03.rkt b/day03.rkt new file mode 100644 index 0000000..5277ab5 --- /dev/null +++ b/day03.rkt @@ -0,0 +1,27 @@ +#lang racket +(require srfi/1) + +(define (priority c) + (cond [(char<=? #\a c #\z) (- (char->integer c) (char->integer #\a) -1)] + [(char<=? #\A c #\Z) (- (char->integer c) (char->integer #\A) -1 -26)])) + +(for/sum ([line (file->lines "day03")]) + (let* ([len (string-length line)] + [mid (/ len 2)] + [p1 (substring line 0 mid)] + [p2 (substring line mid)] + [dup (car (lset-intersection eq? + (string->list p1) + (string->list p2)))]) + (priority dup))) +;; 8243 + +(let loop ([lines (file->lines "day03")] + [sum 0]) + (if (null? lines) + sum + (let*-values ([(group rest) (split-at lines 3)] + [(badge) (car (apply lset-intersection eq? + (map string->list group)))]) + (loop rest (+ sum (priority badge)))))) +;; 2631 |