From 6e1c143815b5c6b803bc55cabc415a0f21558869 Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Tue, 15 Dec 2020 23:52:52 -0800 Subject: [PATCH] Refactored Day 16 using new lib.rkt additions for string splitting. --- lib.rkt | 8 ++++++++ src/16.rkt | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib.rkt b/lib.rkt index 51d88aa..f033dca 100644 --- a/lib.rkt +++ b/lib.rkt @@ -165,6 +165,14 @@ (cadar replaces)) (rest replaces)))) +;; string-lines : string? -> (listof string?) +(define (string-lines str) + (string-split str "\n")) + +;; string-csv : string? -> [string? -> a] -> (listof a) +(define (string-csv str [f identity]) + (map f (string-split str ","))) + ;; Char helpers ;; diff --git a/src/16.rkt b/src/16.rkt index 2d1d3d7..7fac955 100644 --- a/src/16.rkt +++ b/src/16.rkt @@ -9,17 +9,17 @@ [(regexp #px".+: (\\d+)-(\\d+) or (\\d+)-(\\d+)" (list _ from1 to1 from2 to2)) (or/c (integer-in (string->number from1) (string->number to1)) (integer-in (string->number from2) (string->number to2)))]) - (string-split (first input) "\n"))) + (string-lines (first input)))) (define any-valid-ranges/c (apply or/c valid-range/cs)) (define ticket - (map string->number (string-split (second (string-split (second input) "\n")) ","))) + (string-csv (second (string-lines (second input))) string->number)) (define tickets - (map (λ~> (string-split ",") (map string->number _)) - (rest (string-split (third input) "\n")))) + (map #{string-csv % string->number} + (rest (string-lines (third input))))) (define part1 (for*/sum ([ticket tickets]