diff --git a/day05-hard/main.scm b/day05-hard/main.scm index 1d54d71..3ed6fae 100755 --- a/day05-hard/main.scm +++ b/day05-hard/main.scm @@ -433,26 +433,23 @@ (get-range-start state-value) (get-range-end state-value))) -(define (apply-map-to-state-entry seed-map) - (lambda (state-entry) - (if - (is-state-value-current state-entry) - (list state-entry) - (apply-map-to-previous-state-value seed-map (get-state-value state-entry))))) - -(define (apply-map-to-state seed-map) - (compose (list - flat - (map (apply-map-to-state-entry seed-map))))) - (define (seed-maps-processor seed-maps) (compose (list ;; for state #!(tee-with-comment "state after applying mapset")!# ((compose (list - ;; for list of maps (within a single map set); should return state-transforming lambda + ;; for list of maps (within a single map set); returns state-transforming lambda compose - (map apply-map-to-state))) + (map (lambda (seed-map) + ;; for seed map within the list: returns state-transforming lambda + (compose (list + flat + (map (lambda (state-entry) + ;; for seed map _and_ single range from state, returns list of new ranges + (if + (is-state-value-current state-entry) + (list state-entry) + (apply-map-to-previous-state-value seed-map (get-state-value state-entry))))))))))) seed-maps) swap-state)))