diff options
Diffstat (limited to '2020/day-02/day-02.rkt')
-rw-r--r-- | 2020/day-02/day-02.rkt | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/2020/day-02/day-02.rkt b/2020/day-02/day-02.rkt index 3296d32..9e22a1a 100644 --- a/2020/day-02/day-02.rkt +++ b/2020/day-02/day-02.rkt @@ -5,17 +5,11 @@ (struct policy (least most char pwd) #:transparent) (define (make-policy least-str most-str char-str pwd) - (policy (string->number least-str) - (string->number most-str) - (string-ref char-str 0) - pwd)) + (policy (string->number least-str) (string->number most-str) (string-ref char-str 0) pwd)) (define policies (for/list ([l (in-lines (open-day 02 2020))]) - (~>> l - (regexp-match #px"(\\d+)-(\\d+) (\\w): (.*)") - rest - (apply make-policy)))) + (~>> l (regexp-match #px"(\\d+)-(\\d+) (\\w): (.*)") rest (apply make-policy)))) ;; part 1 (define (valid-policy? p) @@ -23,23 +17,17 @@ policy-pwd string->list (count (curry char=? (policy-char p))) - ((λ (n) (and (>= n (policy-least p)) - (<= n (policy-most p))))))) + ((λ (n) (and (>= n (policy-least p)) (<= n (policy-most p))))))) -(for/sum ([p (in-list policies)] - #:when (valid-policy? p)) - 1) +(for/sum ([p (in-list policies)] #:when (valid-policy? p)) 1) ;; part 2 (define (valid-revised-policy? p) (~>> p policy-pwd string->list - ((λ (lst) (list (list-ref lst (sub1 (policy-most p))) - (list-ref lst (sub1 (policy-least p)))))) + ((λ (lst) (list (list-ref lst (sub1 (policy-most p))) (list-ref lst (sub1 (policy-least p)))))) (count (curry char=? (policy-char p))) (= 1))) -(for/sum ([p (in-list policies)] - #:when (valid-revised-policy? p)) - 1)
\ No newline at end of file +(for/sum ([p (in-list policies)] #:when (valid-revised-policy? p)) 1) |