From c2ce0530374cf287e776b2778a1a98581926f201 Mon Sep 17 00:00:00 2001 From: MsK` Date: Mon, 20 Dec 2021 15:15:34 +0100 Subject: [PATCH] proper day 20 --- 20-trench-map/code.scm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/20-trench-map/code.scm b/20-trench-map/code.scm index 3427a5d..54eba13 100644 --- a/20-trench-map/code.scm +++ b/20-trench-map/code.scm @@ -26,20 +26,21 @@ (let* [(new-width (+ (matrix-width image) 4)) (new-height (+ (matrix-height image) 4)) (new-image (filled-matrix new-width new-height 0)) - (top-left (matrix-get image 0 0 0))] + (top-left (matrix-get image 0 0 0)) + ; if palette 0 is 1, outside becomes all 1 each odd iteration + (outside (if (= (vector-ref palette 0) 1) (mod steps 2) 0))] (update-matrix! new-image (lambda (x y v) - ; not really convinced that defaulting to the top left pixel is the right way to do it - (vector-ref palette (+ (* (matrix-get image (- x 3) (- y 3) top-left) 256) - (* (matrix-get image (- x 2) (- y 3) top-left) 128) - (* (matrix-get image (- x 1) (- y 3) top-left) 64) - (* (matrix-get image (- x 3) (- y 2) top-left) 32) - (* (matrix-get image (- x 2) (- y 2) top-left) 16) - (* (matrix-get image (- x 1) (- y 2) top-left) 8) - (* (matrix-get image (- x 3) (- y 1) top-left) 4) - (* (matrix-get image (- x 2) (- y 1) top-left) 2) - (* (matrix-get image (- x 1) (- y 1) top-left) 1))))) + (vector-ref palette (+ (* (matrix-get image (- x 3) (- y 3) outside) 256) + (* (matrix-get image (- x 2) (- y 3) outside) 128) + (* (matrix-get image (- x 1) (- y 3) outside) 64) + (* (matrix-get image (- x 3) (- y 2) outside) 32) + (* (matrix-get image (- x 2) (- y 2) outside) 16) + (* (matrix-get image (- x 1) (- y 2) outside) 8) + (* (matrix-get image (- x 3) (- y 1) outside) 4) + (* (matrix-get image (- x 2) (- y 1) outside) 2) + (* (matrix-get image (- x 1) (- y 1) outside) 1))))) (if (<= steps 1) new-image (enhance new-image palette (- steps 1)))))