advent-of-code-2023

My solutions to AoC 2023
git clone git://git.entf.net/advent-of-code-2023
Log | Files | Refs

commit abba33e8d2bac06e0a3f5057c7e164b078c2b7bb
parent 55b5b1cbe2d68e849b2fd9eb9db939156e74dbce
Author: Lukas Henkel <lh@entf.net>
Date:   Mon, 11 Dec 2023 06:32:55 +0100

Day 11 task 2

Diffstat:
Msrc/day-11.lisp | 25+++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/day-11.lisp b/src/day-11.lisp @@ -3,7 +3,8 @@ (:export #:day-11)) (in-package #:aoc/day-11) -(defun find-galaxies (map) +(defun find-galaxies (map &optional (expansion-factor 2)) + (decf expansion-factor) (let (galaxies empty-rows empty-cols) @@ -21,16 +22,24 @@ do (push y empty-rows)) (loop for galaxy in galaxies collect (cons (+ (point-x galaxy) - (count-if (curry #'> (point-x galaxy)) empty-cols)) + (* (count-if (curry #'> (point-x galaxy)) empty-cols) + expansion-factor)) (+ (point-y galaxy) - (count-if (curry #'> (point-y galaxy)) empty-rows)))))) + (* (count-if (curry #'> (point-y galaxy)) empty-rows) + expansion-factor)))))) (defun day-11 (input) (let* ((map (make-map input)) - (galaxies (find-galaxies map)) - (sum 0)) + (galaxies-1 (find-galaxies map)) + (galaxies-2 (find-galaxies map 1000000)) + (task-1 0) + (task-2 0)) (map-combinations (lambda (p) - (incf sum (apply #'manhattan-distance p))) - galaxies + (incf task-1 (apply #'manhattan-distance p))) + galaxies-1 :length 2) - (values sum))) + (map-combinations (lambda (p) + (incf task-2 (apply #'manhattan-distance p))) + galaxies-2 + :length 2) + (values task-1 task-2)))