From 2bd8d0f87daafc3d1b1ffd4096c49456abe84bf9 Mon Sep 17 00:00:00 2001 From: Inga Date: Thu, 7 Dec 2023 15:34:49 +0000 Subject: [PATCH] minor improvements --- day05-hard/main.scm | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/day05-hard/main.scm b/day05-hard/main.scm index b913f35..1e70e1a 100755 --- a/day05-hard/main.scm +++ b/day05-hard/main.scm @@ -378,10 +378,12 @@ (define symbol-current (quote current)) (define symbol-previous (quote previous)) -(define (mark-state-value-previous state-entry) (cons symbol-previous (cdr state-entry))) (define (is-state-value-current state-entry) (equal? symbol-current (car state-entry))) (define get-state-value cdr) -(define create-state-value cons) +(define (create-state-value state-symbol) (lambda (range) (cons state-symbol range))) +(define create-state-value-current (create-state-value symbol-current)) +(define create-state-value-previous (create-state-value symbol-previous)) +(define (mark-state-value-previous state-entry) (create-state-value-previous (cdr state-entry))) (define swap-state (compose (list #!(tee-with-comment "state after swap")!# (map mark-state-value-previous) @@ -395,17 +397,6 @@ (define get-range-start car) (define get-range-end (compose (list car cdr))) -(define parse-initial - (compose (list - (map (lambda (raw-range) (create-state-value symbol-current (create-range-from-input raw-range)))) - (chunks 2) - (map (compose (list - string->number - list->string))) - cdr - (split (is #\space)) - string->list))) - (define (create-map numbers) (list ;; convert it from destination_start, source_start, length ;; to source_start, source_end, destination_start @@ -422,11 +413,11 @@ (map (lambda (intersection) (if (equal? symbol-in-both-ranges (car intersection)) - (create-state-value symbol-current + (create-state-value-current (create-range (+ map-destination-start (- (get-range-start (cdr intersection)) map-source-start)) (+ map-destination-start (- (get-range-end (cdr intersection)) map-source-start)))) - (create-state-value symbol-previous (create-range (get-range-start (cdr intersection)) (get-range-end (cdr intersection))))))) + (create-state-value-previous (create-range (get-range-start (cdr intersection)) (get-range-end (cdr intersection))))))) (filter (lambda (intersection) (or (equal? symbol-in-second-range (car intersection)) @@ -478,6 +469,19 @@ raw-seed-maps) swap-state))) +(define parse-initial + (compose (list + (map (compose (list + create-state-value-current + create-range-from-input))) + (chunks 2) + (map (compose (list + string->number + list->string))) + cdr + (split (is #\space)) + string->list))) + (define (final-state lines) (((compose (list compose