adventofcode2022

My solutions for Advent of Code 2022
Log | Files | Refs

commit a2d0a6eff5d84df8ef90e97f21847edf03dd8fcf
parent 8c4f16fc411a3f5a512bdcf9cada93e46fa1e417
Author: Lukas Henkel <lh@entf.net>
Date:   Fri,  9 Dec 2022 12:55:45 +0100

Day 9 task 1

Diffstat:
Ainput/day09.txt | 2000+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/day09.lisp | 50++++++++++++++++++++++++++++++++++++++++++++++++++
At/day09.lisp | 17+++++++++++++++++
3 files changed, 2067 insertions(+), 0 deletions(-)

diff --git a/input/day09.txt b/input/day09.txt @@ -0,0 +1,2000 @@ +R 2 +D 2 +R 2 +U 1 +R 2 +L 2 +D 1 +L 1 +D 2 +R 2 +U 2 +D 1 +R 2 +D 2 +U 1 +R 1 +D 1 +L 1 +U 1 +R 1 +L 1 +R 2 +U 2 +D 2 +R 2 +L 2 +U 1 +L 2 +U 2 +L 2 +R 2 +U 2 +R 1 +U 2 +L 2 +D 1 +R 1 +U 2 +D 2 +R 2 +L 2 +U 1 +D 1 +L 2 +U 2 +L 2 +U 1 +D 2 +R 1 +D 1 +R 2 +U 1 +L 2 +D 1 +U 2 +R 2 +L 1 +D 2 +U 1 +D 1 +L 1 +U 1 +R 1 +D 1 +R 1 +U 1 +D 2 +L 1 +D 1 +R 2 +D 1 +U 2 +D 2 +U 2 +L 1 +U 2 +R 2 +L 2 +D 2 +R 1 +L 2 +U 2 +L 1 +U 1 +L 1 +R 2 +L 2 +R 1 +D 1 +U 1 +L 2 +R 1 +L 1 +U 1 +D 1 +U 1 +D 1 +R 1 +L 2 +R 2 +L 1 +U 1 +D 2 +U 2 +L 2 +R 2 +U 1 +R 2 +L 2 +R 2 +L 1 +U 3 +D 1 +L 1 +D 3 +U 1 +D 2 +L 1 +R 3 +D 2 +U 3 +R 1 +D 3 +R 2 +D 1 +U 3 +L 1 +R 2 +L 3 +D 3 +U 2 +L 2 +R 3 +U 3 +D 3 +L 3 +D 2 +L 3 +R 1 +L 1 +D 1 +U 3 +D 3 +U 2 +L 3 +R 3 +U 1 +D 2 +R 2 +L 2 +D 3 +R 3 +U 1 +R 1 +L 3 +U 2 +L 2 +U 1 +R 1 +D 1 +R 3 +U 2 +D 1 +L 1 +U 1 +R 2 +L 1 +R 3 +L 1 +U 3 +L 2 +D 2 +L 2 +D 3 +L 2 +R 1 +U 2 +L 3 +D 1 +L 3 +D 1 +U 2 +L 3 +R 2 +U 1 +L 3 +D 3 +R 3 +U 2 +R 2 +D 3 +R 3 +U 2 +R 2 +L 2 +U 3 +R 1 +L 2 +D 3 +U 1 +L 1 +U 1 +L 2 +R 3 +L 3 +D 3 +R 3 +U 3 +L 1 +R 2 +D 3 +U 1 +R 2 +U 1 +D 1 +L 1 +D 2 +L 2 +D 3 +U 2 +D 1 +U 3 +D 3 +U 3 +R 3 +L 3 +U 4 +L 3 +D 1 +R 4 +U 3 +D 2 +R 1 +D 4 +L 3 +U 1 +L 1 +R 2 +D 1 +R 3 +D 3 +L 3 +D 4 +L 3 +R 4 +U 3 +R 3 +D 1 +R 3 +D 3 +R 3 +D 4 +U 4 +R 2 +D 3 +R 3 +D 2 +U 1 +R 2 +D 2 +U 2 +D 3 +L 2 +R 4 +D 4 +U 4 +R 3 +U 4 +R 1 +U 2 +R 4 +D 2 +L 4 +R 4 +U 3 +L 2 +U 2 +L 3 +R 3 +L 1 +U 4 +L 3 +U 3 +L 3 +U 1 +R 2 +U 3 +R 2 +L 3 +U 1 +D 3 +R 4 +D 1 +R 2 +L 1 +D 1 +U 2 +D 3 +R 4 +U 1 +L 3 +R 4 +U 4 +L 4 +R 2 +D 1 +U 4 +R 1 +D 3 +L 3 +D 1 +R 3 +D 2 +U 2 +L 1 +U 2 +D 3 +L 1 +U 3 +D 3 +L 3 +U 2 +L 3 +U 2 +R 1 +D 1 +R 1 +L 1 +D 2 +R 3 +D 2 +L 2 +R 3 +D 5 +R 5 +U 4 +D 5 +U 5 +D 4 +R 4 +D 2 +R 5 +L 4 +R 2 +L 2 +R 5 +U 5 +R 1 +D 2 +R 1 +L 3 +D 5 +U 3 +D 4 +R 3 +U 4 +D 1 +U 4 +L 5 +R 1 +U 4 +L 5 +U 3 +D 4 +L 2 +D 4 +U 4 +L 2 +D 1 +R 3 +D 1 +R 2 +D 4 +R 5 +L 1 +U 4 +L 4 +U 3 +L 1 +U 1 +R 4 +U 3 +L 1 +R 3 +D 5 +U 2 +R 4 +D 3 +L 2 +D 4 +R 5 +D 2 +U 3 +R 4 +D 4 +L 2 +U 4 +R 5 +L 1 +U 5 +D 1 +R 3 +L 4 +D 1 +U 3 +D 5 +R 2 +D 2 +L 5 +U 2 +D 3 +L 5 +D 5 +L 1 +R 5 +D 2 +U 3 +R 2 +L 2 +U 1 +L 5 +R 1 +L 4 +D 5 +R 5 +D 2 +U 5 +L 5 +D 1 +L 1 +D 3 +R 1 +D 2 +L 2 +R 4 +U 5 +L 2 +R 1 +U 3 +D 1 +U 1 +D 5 +R 2 +D 2 +R 3 +D 6 +U 1 +R 6 +D 4 +U 1 +R 5 +L 6 +R 2 +L 6 +U 6 +R 5 +D 2 +U 1 +D 2 +L 2 +D 5 +R 3 +U 4 +D 2 +L 1 +U 1 +D 3 +U 1 +D 1 +R 5 +U 1 +R 1 +D 3 +U 5 +L 6 +R 3 +L 6 +U 4 +D 2 +R 1 +L 6 +R 2 +D 3 +U 2 +R 2 +L 1 +D 1 +U 1 +R 4 +U 1 +R 2 +U 2 +L 2 +U 2 +D 5 +L 4 +U 6 +L 3 +D 6 +U 5 +L 6 +U 3 +R 5 +U 2 +R 4 +L 6 +D 1 +R 5 +D 4 +L 2 +R 2 +U 1 +D 2 +L 2 +U 4 +R 1 +D 2 +U 2 +R 6 +L 2 +D 5 +R 5 +L 3 +D 1 +U 1 +L 2 +D 4 +R 6 +L 5 +R 3 +U 1 +R 3 +L 1 +R 3 +U 1 +L 1 +U 4 +D 4 +U 3 +R 3 +U 1 +R 2 +D 1 +L 6 +U 2 +R 2 +D 1 +R 5 +L 2 +D 5 +L 3 +R 6 +D 2 +L 2 +D 3 +L 5 +D 7 +L 7 +D 4 +U 5 +R 7 +L 7 +D 3 +U 5 +R 6 +U 3 +L 6 +R 5 +L 4 +D 4 +R 4 +L 6 +D 6 +U 3 +D 3 +R 7 +U 1 +L 5 +U 3 +L 4 +U 3 +L 5 +D 1 +R 7 +U 3 +L 6 +D 1 +U 3 +L 2 +U 6 +L 6 +D 1 +U 1 +D 2 +L 5 +U 4 +R 5 +D 7 +U 3 +D 4 +L 1 +D 3 +R 7 +D 2 +U 4 +L 1 +D 3 +R 3 +D 6 +R 4 +U 3 +D 4 +R 6 +L 7 +U 5 +L 7 +R 3 +L 7 +D 5 +R 7 +D 4 +U 3 +R 6 +U 7 +D 2 +R 2 +L 2 +D 1 +R 3 +U 3 +D 5 +U 3 +L 3 +D 6 +L 6 +R 1 +L 5 +D 6 +U 4 +R 2 +L 2 +D 1 +U 7 +L 5 +D 3 +U 1 +L 1 +R 1 +L 6 +R 1 +D 6 +U 4 +L 7 +U 6 +R 6 +L 2 +D 5 +R 1 +D 6 +L 1 +R 3 +D 1 +U 5 +L 1 +D 3 +U 7 +D 5 +U 7 +D 7 +U 4 +R 3 +U 4 +L 8 +U 1 +R 1 +D 2 +U 5 +D 2 +L 5 +D 6 +U 4 +R 5 +L 5 +U 7 +L 3 +D 1 +L 2 +R 8 +L 1 +U 8 +L 2 +D 3 +R 6 +L 8 +D 2 +L 1 +U 4 +D 1 +R 2 +D 7 +U 5 +D 4 +U 4 +L 2 +D 6 +U 1 +D 5 +U 2 +D 2 +L 8 +D 6 +L 2 +U 1 +R 7 +D 1 +U 5 +L 6 +D 3 +L 2 +D 8 +R 6 +L 5 +U 2 +L 6 +U 4 +D 6 +L 7 +U 8 +L 5 +D 8 +R 8 +D 6 +L 3 +U 6 +L 1 +D 8 +R 7 +L 7 +R 2 +D 6 +R 1 +U 5 +L 5 +R 5 +L 3 +U 8 +L 1 +U 2 +D 5 +R 8 +U 5 +L 5 +D 2 +R 5 +U 1 +D 8 +R 3 +U 1 +R 6 +D 6 +R 5 +D 6 +L 8 +U 8 +L 8 +U 8 +L 8 +R 8 +U 8 +R 5 +L 1 +D 3 +U 1 +D 6 +U 1 +L 8 +U 3 +R 5 +L 2 +R 1 +D 2 +L 2 +U 4 +D 1 +R 1 +D 2 +R 2 +U 4 +R 3 +U 8 +D 9 +L 9 +D 5 +L 4 +D 7 +L 9 +U 4 +L 9 +D 7 +U 4 +L 3 +U 2 +R 5 +U 3 +L 1 +R 5 +L 8 +U 4 +R 6 +L 8 +U 1 +R 7 +D 6 +R 6 +U 7 +L 9 +R 7 +U 8 +R 5 +U 6 +L 4 +D 4 +L 3 +R 8 +U 6 +L 7 +R 4 +D 7 +R 3 +L 3 +D 2 +L 2 +U 5 +R 8 +L 7 +R 9 +D 8 +U 1 +L 1 +D 4 +U 6 +R 4 +L 2 +R 9 +L 9 +R 2 +D 3 +L 4 +U 6 +R 3 +D 5 +L 4 +R 8 +U 3 +R 5 +L 3 +D 7 +R 1 +D 2 +U 5 +L 7 +D 6 +R 1 +D 9 +L 9 +R 8 +U 8 +L 8 +D 7 +U 3 +L 2 +U 4 +D 8 +U 6 +R 3 +U 5 +R 7 +D 1 +R 8 +L 9 +U 7 +D 9 +L 2 +R 7 +U 1 +R 6 +D 3 +L 5 +U 10 +L 8 +R 3 +L 4 +D 9 +U 4 +L 5 +U 5 +D 10 +R 8 +U 6 +L 3 +U 4 +D 6 +L 8 +D 2 +R 8 +L 9 +U 3 +R 5 +D 1 +R 9 +D 6 +L 5 +R 10 +L 8 +R 9 +L 6 +U 8 +L 8 +U 5 +R 3 +U 6 +D 3 +L 10 +D 9 +U 5 +L 3 +U 6 +R 2 +D 7 +R 9 +L 5 +D 3 +U 3 +R 2 +D 10 +U 3 +R 2 +U 6 +L 10 +R 3 +U 3 +R 4 +L 8 +R 1 +L 6 +U 9 +L 7 +D 7 +R 6 +U 3 +R 1 +L 6 +D 5 +L 3 +U 2 +L 5 +R 9 +D 5 +R 4 +L 2 +U 5 +D 7 +L 10 +D 9 +U 7 +D 9 +R 5 +D 3 +L 1 +R 10 +L 4 +U 6 +R 7 +L 2 +R 6 +L 3 +R 3 +D 2 +L 1 +R 2 +L 7 +D 8 +R 5 +L 7 +D 8 +U 5 +L 8 +U 4 +R 8 +U 1 +D 1 +U 4 +D 6 +R 8 +U 10 +D 5 +U 5 +L 1 +D 2 +R 10 +U 10 +R 2 +L 9 +R 2 +D 3 +L 6 +R 10 +D 10 +R 9 +D 7 +U 3 +R 4 +D 9 +R 4 +D 9 +U 9 +L 8 +D 7 +R 7 +U 7 +R 7 +D 9 +L 7 +U 5 +L 10 +R 8 +L 11 +D 9 +L 5 +R 11 +L 6 +R 1 +U 2 +D 9 +L 3 +R 6 +L 6 +R 2 +L 6 +D 6 +R 2 +D 5 +L 8 +R 9 +U 6 +D 6 +L 1 +R 3 +D 2 +R 5 +D 6 +L 1 +D 10 +U 2 +R 4 +U 6 +R 11 +D 1 +R 2 +L 4 +D 9 +L 4 +U 8 +D 10 +U 4 +R 10 +D 1 +U 11 +R 2 +L 11 +D 7 +U 1 +L 7 +U 10 +D 10 +L 11 +R 1 +U 8 +R 1 +L 11 +R 3 +D 10 +R 10 +L 9 +U 7 +R 9 +L 6 +R 7 +U 5 +R 6 +U 4 +L 11 +U 7 +R 7 +L 4 +U 4 +R 2 +D 3 +R 2 +L 9 +D 4 +L 11 +R 6 +D 2 +L 9 +R 7 +D 6 +U 5 +L 8 +D 9 +R 11 +U 11 +R 6 +D 11 +L 9 +R 4 +L 6 +U 10 +R 11 +U 5 +L 6 +R 12 +D 3 +R 4 +U 12 +R 6 +D 8 +R 1 +D 2 +L 11 +R 6 +D 5 +U 10 +D 5 +R 8 +L 6 +D 5 +U 5 +R 8 +L 1 +D 10 +R 5 +U 6 +L 8 +R 4 +L 10 +D 6 +R 3 +D 9 +L 4 +R 9 +U 5 +R 2 +U 11 +R 9 +U 8 +R 7 +L 2 +D 7 +U 7 +D 8 +U 12 +R 6 +D 12 +R 5 +D 10 +U 2 +D 8 +U 6 +R 3 +U 5 +R 5 +L 11 +D 10 +R 3 +U 11 +D 8 +R 7 +L 3 +U 9 +R 4 +L 2 +D 4 +R 8 +D 9 +R 2 +D 3 +U 6 +L 5 +D 4 +L 2 +R 9 +U 5 +D 1 +U 9 +R 9 +U 11 +L 12 +R 10 +D 5 +U 1 +R 9 +U 4 +D 8 +R 1 +D 5 +R 7 +U 11 +L 6 +U 1 +R 12 +D 1 +R 7 +U 12 +D 9 +R 12 +L 1 +U 3 +D 6 +R 11 +L 6 +U 8 +D 11 +R 7 +U 5 +D 4 +U 1 +L 11 +D 1 +U 5 +R 13 +L 9 +U 4 +D 4 +R 10 +U 4 +D 7 +L 4 +D 10 +R 6 +D 5 +R 9 +L 10 +D 2 +U 11 +D 8 +U 1 +R 8 +U 5 +R 8 +D 10 +L 10 +D 7 +R 5 +U 6 +D 7 +U 9 +R 8 +D 4 +R 2 +D 1 +L 1 +U 2 +R 10 +D 2 +U 13 +L 9 +U 13 +L 12 +U 12 +D 6 +L 1 +R 4 +L 7 +R 4 +L 2 +U 8 +R 7 +D 10 +U 2 +L 8 +D 5 +R 9 +D 9 +R 2 +L 3 +U 2 +D 11 +U 5 +D 12 +R 3 +U 10 +D 2 +R 1 +D 13 +U 7 +L 7 +R 1 +U 1 +R 1 +U 6 +D 12 +R 7 +L 7 +R 9 +U 10 +R 13 +D 3 +R 12 +U 1 +L 6 +R 9 +U 10 +L 1 +U 13 +R 2 +D 8 +U 12 +D 10 +L 7 +U 6 +D 9 +L 11 +D 8 +U 4 +R 1 +D 11 +L 8 +U 1 +D 4 +R 7 +U 7 +R 5 +L 1 +R 14 +L 8 +D 10 +R 13 +U 13 +R 9 +L 13 +U 2 +D 7 +R 11 +D 2 +L 9 +D 11 +L 2 +U 12 +D 11 +R 12 +D 3 +R 6 +L 11 +R 7 +D 3 +U 6 +D 9 +L 10 +R 13 +D 7 +U 14 +L 10 +R 11 +D 12 +R 12 +U 13 +R 4 +L 14 +U 5 +L 4 +U 10 +L 3 +U 13 +R 9 +D 7 +U 8 +R 5 +L 14 +U 5 +R 6 +D 13 +L 13 +U 9 +R 13 +D 1 +L 8 +R 9 +U 8 +L 7 +U 4 +D 4 +R 4 +L 5 +U 11 +R 14 +L 2 +U 1 +D 14 +R 13 +D 3 +L 13 +D 2 +U 9 +D 14 +U 1 +R 1 +D 12 +L 6 +R 4 +U 4 +L 11 +U 14 +D 13 +R 12 +L 7 +U 13 +R 4 +U 14 +L 14 +R 11 +L 8 +D 3 +U 4 +R 1 +U 5 +D 12 +L 5 +U 14 +D 6 +R 6 +U 4 +L 1 +D 11 +U 9 +R 5 +U 13 +D 7 +L 5 +D 3 +L 8 +U 7 +D 4 +L 13 +R 1 +D 11 +L 7 +U 6 +D 9 +R 10 +D 6 +R 9 +L 2 +D 6 +U 12 +L 10 +D 3 +U 6 +L 4 +R 4 +U 12 +D 13 +R 9 +L 1 +R 5 +U 14 +R 14 +D 7 +U 10 +R 3 +L 4 +U 6 +L 13 +U 14 +R 10 +L 7 +D 12 +U 5 +L 11 +D 7 +U 9 +D 4 +L 1 +R 11 +D 9 +L 5 +D 15 +R 4 +U 12 +L 1 +U 8 +L 15 +D 15 +L 3 +R 11 +L 9 +R 1 +U 12 +D 9 +R 7 +D 6 +U 2 +L 12 +U 13 +R 11 +L 15 +D 4 +L 8 +U 6 +L 7 +R 2 +U 7 +D 2 +U 13 +D 10 +L 13 +U 1 +D 6 +L 11 +R 14 +L 5 +U 2 +R 11 +D 10 +L 4 +R 14 +U 13 +D 9 +U 2 +D 4 +R 14 +L 4 +R 4 +L 4 +U 6 +D 11 +L 10 +U 9 +L 3 +U 12 +L 8 +U 9 +D 4 +U 4 +L 10 +U 1 +D 8 +U 15 +D 3 +U 12 +R 3 +D 8 +U 1 +R 10 +L 1 +U 5 +D 1 +L 1 +R 3 +U 1 +R 8 +U 10 +R 1 +U 11 +R 15 +D 16 +U 13 +D 7 +U 7 +D 14 +R 9 +L 13 +R 12 +U 2 +R 11 +L 11 +R 3 +D 11 +U 11 +R 2 +D 3 +U 6 +L 14 +R 6 +L 6 +U 3 +R 3 +D 1 +U 5 +L 3 +R 4 +D 9 +U 15 +R 2 +U 5 +D 5 +R 14 +U 6 +R 1 +D 4 +U 2 +D 3 +R 8 +L 4 +D 2 +U 12 +D 2 +U 7 +L 14 +U 1 +R 10 +L 4 +D 12 +L 9 +D 16 +U 2 +R 7 +D 16 +U 9 +D 13 +U 7 +L 14 +D 5 +R 12 +U 13 +R 13 +U 2 +L 11 +D 9 +U 2 +R 8 +U 5 +R 7 +U 9 +L 11 +D 16 +U 10 +R 5 +D 7 +L 6 +D 8 +U 4 +R 3 +D 5 +L 5 +U 11 +R 4 +D 12 +R 12 +L 10 +R 15 +U 9 +D 12 +L 11 +U 6 +D 11 +U 12 +L 6 +R 3 +U 12 +D 5 +L 1 +R 12 +U 14 +L 1 +D 2 +L 4 +D 7 +L 12 +U 10 +L 12 +U 4 +D 14 +R 13 +U 9 +L 2 +U 6 +L 1 +U 9 +D 16 +L 2 +R 16 +D 5 +L 7 +U 13 +L 15 +R 1 +D 8 +R 15 +D 5 +R 12 +L 5 +R 11 +U 17 +D 13 +U 13 +L 4 +D 8 +L 1 +D 7 +R 11 +U 7 +R 11 +L 9 +D 3 +L 2 +U 4 +D 16 +L 10 +U 11 +R 5 +U 4 +R 6 +L 11 +R 17 +U 13 +R 12 +D 11 +L 17 +U 15 +D 4 +R 9 +U 9 +L 10 +D 5 +R 14 +U 10 +R 5 +U 15 +L 12 +D 14 +R 14 +L 11 +R 5 +U 7 +D 1 +R 4 +D 14 +U 3 +R 6 +D 5 +R 1 +D 12 +L 14 +D 6 +L 15 +U 16 +D 10 +R 12 +D 9 +U 1 +D 1 +L 4 +D 6 +U 16 +R 11 +L 11 +R 3 +L 2 +U 12 +R 9 +D 16 +R 12 +L 14 +U 6 +L 7 +D 5 +U 4 +R 13 +L 8 +D 16 +U 5 +D 5 +U 6 +R 14 +L 6 +D 7 +U 3 +L 15 +R 14 +L 17 +R 17 +U 16 +L 4 +R 3 +U 1 +D 15 +L 12 +D 11 +L 18 +D 18 +U 10 +D 4 +U 1 +R 11 +U 18 +D 12 +R 11 +U 13 +D 14 +R 17 +D 18 +U 13 +R 8 +U 4 +R 9 +D 18 +L 6 +R 7 +L 14 +U 10 +L 10 +U 16 +D 15 +L 15 +D 3 +L 2 +D 7 +R 3 +D 7 +U 11 +L 6 +R 8 +L 3 +U 3 +R 8 +D 8 +U 10 +L 15 +D 1 +U 16 +R 1 +L 13 +R 7 +U 10 +L 12 +R 8 +D 3 +L 14 +D 12 +R 12 +D 3 +L 2 +D 15 +R 3 +L 14 +D 4 +R 5 +L 13 +D 9 +U 2 +L 5 +R 13 +D 4 +L 14 +R 14 +D 16 +R 1 +U 11 +R 6 +L 7 +U 16 +L 15 +D 6 +U 7 +R 16 +D 2 +L 15 +D 18 +U 3 +D 1 +R 7 +D 1 +L 4 +D 16 +U 12 +L 12 +R 7 +U 5 +L 5 +U 13 +R 13 +U 7 +L 9 +R 9 +U 8 +D 6 +L 3 +U 4 +R 12 +L 12 +D 16 +U 12 +L 4 +R 11 +U 9 +D 13 +R 15 +L 3 +D 17 +R 6 +D 13 +R 6 +D 5 +L 19 +U 10 +D 3 +L 2 +U 13 +R 2 +D 3 +L 3 +U 3 +R 1 +U 12 +L 2 +D 19 +L 17 +R 10 +D 11 +U 8 +R 10 +L 15 +R 4 +D 9 +U 4 +D 11 +U 4 +D 3 +L 5 +D 15 +U 1 +L 19 +D 16 +R 11 +U 12 +D 16 +L 4 +R 13 +U 2 +L 19 +U 9 +R 5 +D 7 +R 19 +L 9 +U 2 +D 2 +R 3 +U 10 +L 13 +D 16 +L 2 +D 5 +L 8 +R 9 +L 18 +R 9 +U 13 +D 7 +R 14 +U 8 +R 18 +L 18 +U 8 +L 13 +R 9 +U 5 +L 16 +U 4 +D 4 +R 10 +U 13 +R 2 +L 6 +R 18 +D 3 +L 11 +R 12 +L 2 +R 12 +D 7 +U 12 +R 13 +U 14 +D 1 +R 8 +L 13 +U 5 +L 9 +U 19 +D 14 +L 4 +U 8 +D 8 +U 1 +D 16 +U 4 +D 8 +U 20 diff --git a/src/day09.lisp b/src/day09.lisp @@ -0,0 +1,50 @@ +(defpackage #:adventofcode2022/day09 + (:use #:cl #:adventofcode2022)) +(in-package #:adventofcode2022/day09) + +(defun move-head (head dir) + (cond + ((char= dir #\U) (decf (cadr head))) + ((char= dir #\D) (incf (cadr head))) + ((char= dir #\L) (decf (car head))) + ((char= dir #\R) (incf (car head))))) + +(defun head-tail-touching-p (head tail) + (and + (<= (abs (- (car head) (car tail))) 1) + (<= (abs (- (cadr head) (cadr tail))) 1))) + +(defun move-tail (tail dir head) + (cond + ((char= dir #\U) + (setf (car tail) (car head)) + (setf (cadr tail) (1+ (cadr head)))) + ((char= dir #\D) + (setf (car tail) (car head)) + (setf (cadr tail) (1- (cadr head)))) + ((char= dir #\L) + (setf (car tail) (1+ (car head))) + (setf (cadr tail) (cadr head))) + ((char= dir #\R) + (setf (car tail) (1- (car head))) + (setf (cadr tail) (cadr head))))) + +(defun task1 (inputs) + (loop with visited-positions = (make-hash-table :test 'equal) + with pos-head = (list 0 0) + with pos-tail = (list 0 0) + initially (setf (gethash (copy-seq pos-tail) visited-positions) t) + for (dir steps) in inputs + do (loop for i from 1 to steps + do (move-head pos-head dir) + unless (head-tail-touching-p pos-head pos-tail) + do (move-tail pos-tail dir pos-head) + and do (setf (gethash (copy-seq pos-tail) visited-positions) t)) + finally (return (hash-table-count visited-positions)))) + +(define-day 9 + (:translate-input (lambda (line) + (list (aref line 0) + (parse-integer (subseq line 2))))) + #'task1 + nil) diff --git a/t/day09.lisp b/t/day09.lisp @@ -0,0 +1,17 @@ +(in-package #:adventofcode2022/test) + +(defconstant +testdata-day09+ "R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2") + +(def-test day09-task1 () + (is-true + (= 13 + (run-task 9 1 + (make-string-input-stream +testdata-day09+))))) +