From 342b778f2c53db21196d22f10f2e278a7a7efa5c Mon Sep 17 00:00:00 2001 From: xenia Date: Sat, 3 Dec 2022 00:54:12 -0500 Subject: [PATCH] day 3: genious solution --- 3.rkt | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/3.rkt b/3.rkt index 40a4ed0..dbc83a2 100644 --- a/3.rkt +++ b/3.rkt @@ -4,24 +4,17 @@ ;; solution for day 3 -(define priorities - (string->list "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")) +(define (char->prio chr) + (- (char->integer chr) (if (char-upper-case? chr) 38 96))) (define (part1 input) (for/sum ([line (in-list input)]) (define-values [left right] (split-at line (/ (length line) 2))) - (~>> (set-intersect left right) - (set-first) - (index-of priorities)))) + (~> (set-intersect left right) (set-first) (char->prio)))) (define (part2 input) - (match input - ['() 0] - [(list* a b c rst) - (+ (~>> (set-intersect a b c) - (set-first) - (index-of priorities)) - (part2 rst))])) + (for/sum ([group (in-slice 3 input)]) + (~> (apply set-intersect group) (set-first) (char->prio)))) (define (parse fname) (map string->list (file->lines fname)))