commit - 55b5b1cbe2d68e849b2fd9eb9db939156e74dbce
commit + abba33e8d2bac06e0a3f5057c7e164b078c2b7bb
blob - 37cac3da68d8361d396ec08d10a505983d1073ca
blob + bde12bd7cfb98deeee747a39bce04ed4bb24584c
--- src/day-11.lisp
+++ src/day-11.lisp
(: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)
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)))