97f40aa055aeb41f24ef6380f03770ab8b61e49f — T T a month ago master
Day 25
3 files changed, 1336 insertions(+), 1 deletions(-)

M aoc18.asd
A day25.input
A day25.lisp
M aoc18.asd => aoc18.asd +2 -1
@@ 38,4 38,5 @@ (:file "day21")
  	       (:file "day22")
  	       (:file "day23")
- 	       (:file "day24")))
+ 	       (:file "day24")
+ 	       (:file "day25")))

A day25.input => day25.input +1245 -0
@@ 0,0 1,1245 @@
+ -6,-2,-6,5
+ -8,0,1,-8
+ 8,6,-1,2
+ -2,3,0,1
+ 5,2,2,-8
+ -5,-2,2,1
+ 6,1,-3,6
+ -5,6,-6,6
+ 2,3,-8,0
+ 8,-7,2,-3
+ 8,-5,7,7
+ 5,-2,1,3
+ 0,-5,5,0
+ -6,7,-8,-1
+ 2,-3,0,-8
+ -2,-5,7,-7
+ -8,-4,0,-4
+ 7,-7,0,4
+ -2,0,6,8
+ 3,-7,0,-2
+ 6,5,7,0
+ -5,2,2,-4
+ -1,7,8,-7
+ 5,-4,-7,7
+ 5,3,4,0
+ -8,8,-8,3
+ 7,8,2,0
+ -8,-2,5,-7
+ 1,-3,8,4
+ 3,3,6,-8
+ 3,-2,-6,3
+ -6,0,3,-4
+ 7,3,5,3
+ -3,0,6,0
+ -1,8,-7,-2
+ -6,-1,-6,2
+ 8,0,-4,5
+ -4,-1,3,-1
+ 3,0,1,-1
+ 7,0,-6,8
+ 7,-4,5,-6
+ 7,-8,-8,-4
+ -3,4,-8,-7
+ -5,2,-6,-2
+ -4,-2,6,-8
+ 6,6,6,-3
+ 2,-5,8,0
+ -2,5,5,0
+ -6,-4,2,0
+ 3,-4,-7,0
+ 0,7,-4,2
+ 0,-3,3,2
+ 8,-7,7,1
+ -1,-8,-8,1
+ 7,8,-5,3
+ 5,-4,-2,-4
+ 6,-7,-8,-1
+ 0,5,-5,-3
+ -1,-8,-2,4
+ 5,8,2,-7
+ 3,-2,2,2
+ 5,5,1,1
+ 0,-2,-3,-3
+ -6,-8,0,2
+ 6,-5,7,0
+ -8,3,-8,7
+ -1,6,8,3
+ 8,-5,7,0
+ -4,-1,-4,0
+ -7,1,2,4
+ 8,-1,-8,2
+ 4,2,7,6
+ 5,6,0,3
+ 6,6,4,0
+ -3,-5,-8,4
+ -6,8,3,0
+ 0,-5,0,-6
+ 5,-7,1,6
+ -7,2,3,0
+ -5,-2,-8,-7
+ -8,2,2,2
+ 3,8,-4,-3
+ -5,0,-2,-3
+ 8,-4,4,-7
+ -7,8,7,-8
+ 5,-1,2,-3
+ 6,4,4,1
+ 6,3,-5,5
+ -3,-1,-1,-8
+ 0,-3,-2,8
+ 0,7,-8,2
+ -3,0,-4,5
+ 2,-5,-1,-3
+ -1,-7,8,-5
+ 8,-8,-1,8
+ -7,-1,-7,0
+ 3,7,-4,2
+ -6,4,-6,0
+ 2,-1,0,-7
+ -6,-4,0,6
+ -7,2,3,3
+ -3,-2,-3,-1
+ 8,-4,7,7
+ 8,-3,5,7
+ 5,8,0,-5
+ -6,0,-2,4
+ -7,-4,-3,-4
+ 8,-2,8,5
+ -7,4,2,0
+ -1,-2,3,1
+ 1,5,7,-6
+ -2,6,0,4
+ 3,7,2,-8
+ 0,-6,7,3
+ 3,-7,-4,0
+ -2,7,8,-6
+ 2,0,-6,-4
+ 3,3,-2,4
+ 7,-2,4,0
+ -7,-2,-3,5
+ -3,-8,-4,6
+ -6,0,3,-5
+ 0,-3,0,-8
+ 8,-4,5,1
+ 1,0,-7,-5
+ -8,5,0,-2
+ -7,-8,3,6
+ 7,-7,3,7
+ -7,-5,-8,6
+ 0,5,8,0
+ 0,-6,0,7
+ 0,3,2,-2
+ 6,-8,-7,2
+ 7,4,-5,2
+ -8,3,6,4
+ 7,-8,1,-5
+ -3,-5,4,-5
+ -8,0,0,-3
+ 3,-3,-8,1
+ 4,6,3,5
+ 3,-5,-2,0
+ 8,-6,-7,-3
+ -3,-6,-4,6
+ 2,-4,2,4
+ 5,4,2,3
+ 6,0,0,3
+ -2,4,-6,0
+ 8,-4,-7,-7
+ 3,0,1,1
+ 4,0,1,2
+ -8,-3,2,-6
+ 0,-2,-5,-5
+ 6,0,7,-4
+ 0,-5,-7,-1
+ -8,-1,-5,3
+ 0,-1,3,3
+ 6,8,-2,0
+ -8,-8,-6,-4
+ -2,8,1,2
+ -4,-2,2,-3
+ -3,3,6,-8
+ -4,0,-4,7
+ -7,-2,4,-5
+ 5,3,-3,1
+ -2,-2,-5,-8
+ 0,5,6,4
+ 6,-5,2,-6
+ 0,-3,-6,0
+ -4,6,-7,-3
+ -6,-7,-1,-7
+ 8,-7,6,-1
+ 6,-4,-7,7
+ -6,-5,8,-3
+ -6,7,7,-1
+ 1,4,0,-5
+ 5,8,-7,2
+ 1,0,1,4
+ 3,2,-8,4
+ 0,4,0,5
+ 4,5,-7,-6
+ 5,1,-3,-6
+ 0,-7,1,0
+ 6,-3,-5,-4
+ -7,3,4,2
+ -2,-2,-5,3
+ -6,3,5,-3
+ 4,7,-6,-6
+ 1,4,-7,-6
+ 3,-6,-1,1
+ -6,0,-2,7
+ -7,3,5,-4
+ 1,5,1,-5
+ 7,7,6,-6
+ 6,0,0,4
+ 2,-5,-5,3
+ 8,3,3,3
+ 2,-3,1,-3
+ 1,-2,3,-7
+ -2,-6,-1,-7
+ -8,2,8,-5
+ 7,4,7,1
+ 1,0,-5,4
+ -4,-3,-3,2
+ -7,3,-1,-3
+ 7,6,-7,-1
+ 7,-3,5,-1
+ 5,-1,6,1
+ -4,3,-4,7
+ 3,-7,0,5
+ 3,0,-5,0
+ -5,8,-8,-2
+ -1,0,0,-5
+ -1,2,-4,5
+ 2,0,-5,-1
+ 7,2,0,-4
+ -6,-5,2,-2
+ -1,-2,-8,-2
+ 0,-6,5,0
+ -2,0,-5,1
+ -6,-3,-1,3
+ 4,8,-1,-4
+ 4,-3,-3,-5
+ 5,-4,0,8
+ 0,-7,-4,-5
+ 7,7,1,-8
+ 2,8,-4,3
+ 1,7,-5,0
+ -4,0,4,4
+ 5,6,-8,-7
+ 6,1,-4,8
+ 2,-8,4,6
+ -5,8,0,-2
+ 5,2,-1,6
+ 0,-3,0,-6
+ -6,-8,0,6
+ -7,-1,-1,4
+ 8,-7,-1,-6
+ -7,-2,-1,-6
+ 8,5,7,2
+ -5,-6,3,-3
+ 3,0,-3,-1
+ 0,7,0,6
+ 7,4,0,-5
+ 4,-2,-5,4
+ -4,4,1,6
+ 7,2,-5,1
+ -7,-5,7,3
+ 2,4,7,-8
+ 6,1,2,-1
+ 2,0,-1,1
+ -7,0,6,4
+ -4,8,-8,3
+ -6,-5,-6,-2
+ -6,-4,5,0
+ -2,-6,-6,8
+ -8,3,4,6
+ -6,7,-5,2
+ 8,6,6,7
+ -4,8,-5,-1
+ 5,1,-5,-3
+ 6,-3,-8,-1
+ 0,3,7,0
+ 3,0,0,0
+ 3,-4,-7,-1
+ -3,-7,0,-3
+ 5,5,-7,2
+ -2,8,0,2
+ -1,-1,-7,3
+ 0,0,-5,8
+ -1,-1,-3,-1
+ 4,2,0,0
+ 7,-3,5,-5
+ -4,0,-5,0
+ 3,0,7,2
+ -2,0,-7,3
+ 6,3,1,6
+ 0,-2,-4,0
+ 7,5,5,4
+ 0,5,-1,0
+ 0,-2,1,6
+ -7,7,0,0
+ -3,7,4,4
+ 4,0,1,8
+ 6,-7,0,-8
+ -3,1,-6,-7
+ 3,4,-5,5
+ -1,0,2,4
+ -8,-2,-3,3
+ -4,8,-1,-1
+ 2,2,5,-3
+ 0,-5,8,-4
+ 3,6,0,-2
+ -3,-4,1,-1
+ -3,3,-3,3
+ -8,1,-8,-6
+ 5,-2,-8,-6
+ 1,8,-5,0
+ -5,-3,0,4
+ 0,-2,7,-7
+ -6,8,5,7
+ 8,-7,3,7
+ -7,2,7,8
+ -6,3,-6,-4
+ 8,2,-4,-8
+ -1,-7,-6,3
+ 3,-2,-1,4
+ 0,-4,-5,-7
+ 2,-1,-2,-7
+ -7,0,0,4
+ 7,-3,0,6
+ -2,-6,-4,-3
+ 2,2,-8,-5
+ -2,0,0,7
+ 0,4,-2,-7
+ -1,0,0,6
+ 5,-2,-3,8
+ -1,6,-7,-1
+ -1,-1,2,0
+ 0,-4,-3,1
+ -4,7,3,7
+ 0,0,0,4
+ 7,4,0,7
+ 7,8,2,-1
+ -4,-2,4,-2
+ -5,-6,-4,0
+ -3,7,7,-7
+ 3,-8,-8,0
+ 2,0,-1,0
+ -5,-2,-8,-2
+ 6,-4,-6,-5
+ 2,-1,-1,-7
+ 4,-1,-4,1
+ -1,0,6,8
+ -5,-5,0,2
+ 3,-4,2,5
+ 7,4,-1,4
+ -2,-5,0,8
+ 7,0,3,3
+ 5,-5,-7,-6
+ 8,8,2,1
+ 0,-5,-6,6
+ 3,-7,-7,-4
+ 3,-1,2,2
+ -6,6,8,0
+ -6,6,3,-5
+ -6,0,0,0
+ -4,-4,-1,-7
+ 0,-4,-6,0
+ 5,4,8,-2
+ -2,-5,8,3
+ 4,6,6,-1
+ -3,0,0,-1
+ 8,6,-2,-1
+ 8,-3,4,-6
+ -1,8,-7,-8
+ 2,-6,-3,-7
+ 3,4,1,6
+ 4,-6,5,-5
+ -1,-6,0,5
+ -7,3,0,8
+ 6,-6,-3,4
+ 0,-6,-2,4
+ 5,5,4,-4
+ 3,-5,4,0
+ -6,3,6,4
+ 7,7,8,7
+ -3,6,5,-2
+ 2,-5,-1,-8
+ 5,3,4,6
+ 7,2,3,0
+ -3,-1,1,-4
+ -2,-3,-7,2
+ 3,6,5,5
+ 8,3,-4,7
+ 7,0,-4,8
+ -5,-8,0,0
+ -4,0,1,-4
+ 3,-1,0,7
+ 5,3,2,-4
+ -7,-7,3,7
+ 0,3,5,-2
+ -2,-4,8,6
+ -4,8,-2,3
+ -1,-6,6,6
+ -3,1,-8,1
+ -3,-5,-8,-7
+ -7,5,-8,-3
+ 4,-2,3,-2
+ -3,-4,-8,2
+ 0,-6,-8,-3
+ 4,-4,0,-4
+ -5,-6,-3,0
+ 4,-8,-2,-5
+ 7,6,-6,7
+ 6,-1,6,0
+ -8,5,-8,1
+ 7,-5,-8,3
+ 7,-5,-2,3
+ -5,-2,0,7
+ -1,7,4,5
+ -2,3,-3,2
+ -6,6,3,2
+ 1,1,0,1
+ -3,-5,0,-6
+ -5,1,-2,3
+ -5,2,0,-6
+ 0,-6,6,8
+ -6,3,-8,0
+ -5,3,8,5
+ 3,3,-2,0
+ 7,5,-2,-2
+ 8,0,7,0
+ 1,0,0,3
+ 3,0,-7,7
+ -5,-7,5,4
+ -2,0,7,6
+ 4,-5,-7,-3
+ -1,0,4,-1
+ -8,-3,0,-4
+ -1,8,7,-1
+ 5,3,-2,0
+ 3,-4,-7,3
+ 8,-1,3,-7
+ -3,-1,3,-4
+ -1,-2,0,-7
+ 3,-8,7,0
+ -8,2,5,-5
+ 3,5,5,2
+ -4,-1,4,-3
+ -2,-6,8,-5
+ -5,-1,-7,-6
+ 8,-5,-7,4
+ 7,-7,0,-4
+ 0,3,4,0
+ 7,-6,7,0
+ -1,-1,2,-8
+ 3,0,2,-2
+ -1,-6,-6,-8
+ -6,-7,7,-2
+ -1,0,-4,-6
+ -7,-1,-6,4
+ 7,2,3,1
+ -6,2,7,0
+ -7,-4,8,-5
+ 0,-6,-1,2
+ 1,0,4,5
+ -4,3,3,-7
+ -3,3,3,2
+ 6,-4,-3,1
+ -3,-4,2,2
+ 3,-1,8,7
+ -8,0,-3,-4
+ -8,0,3,4
+ 8,7,4,-5
+ -4,-5,-3,-1
+ 6,-1,-7,-4
+ 3,0,-5,6
+ -3,2,6,3
+ -5,0,-5,8
+ -6,-4,0,1
+ -6,7,0,7
+ 1,-8,5,2
+ -7,-5,3,-5
+ 0,-6,0,-4
+ -3,-5,-6,7
+ 6,-1,-5,-5
+ 0,-4,4,-4
+ 4,-6,1,-1
+ -4,6,-3,-1
+ 4,8,-7,3
+ 8,3,-8,2
+ 5,4,-5,-4
+ 7,2,0,-5
+ -3,2,-5,-1
+ -1,0,-6,2
+ -5,8,-8,8
+ 1,-7,-1,-3
+ 4,-4,7,-3
+ -2,0,0,-3
+ 8,1,7,-3
+ -3,-4,4,0
+ -4,6,6,4
+ -8,2,7,-3
+ -5,4,-8,-4
+ -4,5,2,8
+ -8,6,0,0
+ -8,7,8,-4
+ 2,7,8,0
+ -2,-1,3,1
+ 7,-4,-4,8
+ -6,-5,-2,0
+ 0,-1,-4,-3
+ 0,6,8,-4
+ 6,-8,-2,3
+ 0,-8,7,-1
+ 0,-6,-5,7
+ 1,5,-1,1
+ 3,-3,8,-2
+ 7,-8,-2,-7
+ 2,-7,4,-7
+ 0,-6,-4,8
+ 6,-6,6,1
+ -7,-8,-3,-8
+ 2,-4,-2,7
+ 8,-1,8,0
+ 6,-2,0,8
+ -3,-7,-8,0
+ 3,-3,-4,6
+ -1,7,2,6
+ -3,1,-4,-1
+ -3,-1,5,0
+ -3,-3,-5,0
+ -8,-3,-1,3
+ 4,-5,-7,0
+ -6,-1,3,-4
+ 5,-3,6,2
+ 0,4,5,5
+ 4,-2,0,8
+ -2,-5,-6,-7
+ 4,7,4,2
+ 3,-4,0,8
+ -8,-5,-6,3
+ -8,-8,7,-3
+ -3,0,1,-6
+ -1,6,8,0
+ 0,2,8,6
+ 0,8,2,-4
+ 4,2,5,7
+ -6,1,-4,-4
+ -6,2,0,-7
+ 0,2,-5,6
+ -4,0,3,4
+ 4,-5,-5,7
+ -8,0,1,2
+ 2,-2,-4,1
+ -7,8,6,3
+ -8,-3,4,7
+ -4,1,-2,-5
+ -2,2,-6,4
+ -1,-5,8,2
+ 7,-7,5,-6
+ 3,-7,-8,0
+ 5,2,-6,1
+ -4,-1,5,2
+ -1,4,5,7
+ -4,3,0,-5
+ -5,8,6,-3
+ 0,-3,1,4
+ 2,4,-4,5
+ 8,-3,0,3
+ 8,6,3,-5
+ -7,6,-8,-8
+ 0,-5,-8,-5
+ -6,5,5,-6
+ 1,6,0,0
+ 1,-7,5,-4
+ 5,6,3,-7
+ -6,8,-2,7
+ 5,2,-8,-2
+ 7,3,-4,-1
+ -6,4,0,-4
+ 0,6,7,1
+ -2,4,8,-3
+ 2,1,0,1
+ 2,-2,-6,0
+ 4,-5,-4,-6
+ -3,5,6,2
+ -3,-5,0,0
+ 3,-5,-1,4
+ 0,3,0,0
+ -3,8,-7,1
+ -2,6,0,7
+ 5,0,6,4
+ -6,-3,-4,8
+ 4,7,-8,4
+ 8,5,0,-2
+ 4,2,8,5
+ -7,5,2,3
+ -1,5,2,2
+ 8,2,-3,2
+ -7,-3,7,-2
+ 3,-4,0,-4
+ -2,2,-2,0
+ 4,-8,-5,6
+ 3,-3,1,2
+ -2,5,8,5
+ -1,-7,1,-8
+ -5,-2,-6,-1
+ 7,0,-5,-4
+ 7,1,-1,-2
+ -4,5,3,-8
+ 4,3,-4,-8
+ -1,5,1,-1
+ 4,-5,2,2
+ -4,-3,-1,0
+ -4,6,6,-5
+ 1,4,-3,1
+ -1,7,-1,-5
+ -8,-8,0,1
+ 0,5,5,-7
+ -5,6,5,7
+ -1,-8,-4,5
+ 1,8,-2,6
+ 3,-5,-1,6
+ 6,-5,0,1
+ 2,4,-2,-8
+ -2,-5,4,0
+ -5,-3,1,7
+ 5,-5,4,0
+ -2,0,2,-7
+ 0,8,0,-1
+ -2,2,5,3
+ 8,-7,7,6
+ 3,-7,6,0
+ 5,7,2,0
+ -2,1,3,7
+ 5,-3,6,-8
+ -6,8,-3,2
+ 2,8,-1,0
+ -1,0,-8,-8
+ -7,1,4,-3
+ 0,-4,6,2
+ 0,-4,6,-7
+ -2,5,0,-5
+ -7,5,6,-6
+ 0,2,2,1
+ -7,8,-3,7
+ -6,0,2,-7
+ 8,-4,-7,3
+ -3,0,7,0
+ 0,-5,6,-6
+ 1,0,0,7
+ 4,5,-5,6
+ 2,0,-5,4
+ 5,8,-7,-1
+ 0,5,0,-6
+ -2,4,-1,6
+ 5,-3,6,-4
+ 8,-1,-7,-8
+ -3,4,7,6
+ 5,-5,-2,5
+ 0,-7,0,-1
+ -1,5,2,-7
+ 5,-1,0,4
+ 6,-6,-5,-5
+ -7,-6,2,-1
+ 7,4,5,-1
+ -7,3,-6,8
+ 8,-8,3,4
+ 6,-6,-2,0
+ 0,-3,6,0
+ 5,-2,-7,8
+ 7,0,0,0
+ 5,-7,6,-6
+ -7,-8,-1,-7
+ 0,7,0,-1
+ 8,-2,0,-3
+ 8,-8,-4,0
+ -7,-4,1,-5
+ 6,-1,4,-4
+ 3,-3,3,-3
+ -7,0,-3,2
+ 0,3,-2,5
+ 0,-1,6,-3
+ -7,-3,-6,-8
+ -1,-8,2,5
+ 1,0,4,2
+ 2,2,-8,0
+ 2,-8,3,-7
+ 8,0,-4,6
+ -8,7,6,-2
+ -7,4,-7,1
+ 0,0,0,-1
+ 0,7,7,-7
+ 7,7,0,1
+ 2,-4,-1,3
+ 7,6,-2,-5
+ 4,6,2,0
+ 4,7,2,2
+ -4,-8,-6,1
+ 5,5,2,-5
+ -6,3,-4,3
+ -2,3,8,-4
+ -8,-4,-6,-7
+ 8,-5,-7,6
+ -6,2,-5,-1
+ 3,0,-5,-8
+ -6,8,8,4
+ 7,1,-3,-3
+ 5,-2,7,-7
+ 8,-4,-4,3
+ 5,6,-6,7
+ 3,-3,7,-6
+ -7,1,-6,-3
+ 5,7,4,6
+ -2,1,-8,-4
+ -5,3,2,3
+ -8,-3,7,5
+ -2,3,-4,5
+ 2,-7,0,4
+ 7,-5,8,5
+ -3,-2,4,-7
+ 8,-2,4,-8
+ 5,-6,3,5
+ -4,-7,4,3
+ -7,0,-8,7
+ 8,6,-3,0
+ 0,-6,-6,0
+ 5,8,-3,-5
+ -2,1,8,1
+ -5,3,8,7
+ -6,-2,6,1
+ -2,-7,6,-4
+ 4,6,1,-2
+ 4,8,0,-2
+ -8,3,1,3
+ 3,-8,2,-1
+ 0,-6,6,-8
+ -4,-7,-5,-6
+ 2,6,0,1
+ 8,0,0,-4
+ -6,0,0,-5
+ -4,7,-6,4
+ -3,-5,8,-2
+ -2,5,-8,8
+ 3,0,1,0
+ -2,8,0,4
+ -8,0,8,7
+ -1,-6,-3,-2
+ -5,-4,6,-3
+ -2,-6,1,5
+ -8,3,-5,-3
+ -8,-3,3,2
+ 3,-2,-3,-2
+ 3,0,5,-5
+ 4,7,-5,3
+ 2,7,-7,-6
+ 0,0,0,1
+ 6,-8,-5,-5
+ 7,-6,3,-6
+ -6,-3,-3,-8
+ 8,-1,0,0
+ -1,6,-3,-8
+ 5,-3,-4,0
+ 5,-8,3,7
+ 5,0,-2,3
+ 0,0,-8,1
+ -4,7,-8,-6
+ -3,-1,0,4
+ -6,-2,-6,-6
+ 1,0,-5,6
+ 3,3,7,8
+ 6,4,0,6
+ -4,-6,-3,-1
+ -8,-5,6,6
+ 5,6,-2,2
+ 0,3,-1,-7
+ -4,-8,-3,0
+ -3,7,0,-5
+ 0,8,5,7
+ -4,-7,-2,4
+ 6,1,5,4
+ -2,5,-5,-4
+ -1,1,-7,5
+ -6,0,7,5
+ 4,0,-3,2
+ 0,-6,-5,6
+ 8,1,6,0
+ 2,2,-3,-8
+ -3,-6,-6,8
+ 0,5,5,2
+ 0,3,-4,3
+ 1,-1,0,6
+ 0,-7,4,-3
+ -4,-1,-8,-5
+ 4,8,-2,0
+ -1,-8,3,3
+ -7,-2,2,2
+ -5,-6,6,0
+ 0,8,-5,1
+ -1,2,-6,7
+ 0,-8,3,-3
+ -3,-4,3,0
+ -2,7,7,-4
+ -5,-5,-3,1
+ -2,0,6,2
+ -4,7,-2,2
+ 2,8,3,5
+ 2,-6,0,5
+ 2,-8,-6,0
+ -2,7,0,6
+ 5,-2,0,8
+ 6,-5,8,-6
+ 5,-7,-2,-7
+ 1,-5,7,1
+ 3,6,2,-8
+ 6,5,0,7
+ -2,3,-5,-2
+ 8,-8,1,-3
+ -2,0,-4,-4
+ 6,0,-5,-4
+ -2,0,4,-8
+ 0,-7,-4,3
+ 5,-4,-1,2
+ 1,8,5,-4
+ 6,6,-8,-3
+ -6,-2,3,1
+ 3,-1,5,3
+ -5,-5,0,8
+ 8,8,-8,-7
+ 0,2,0,6
+ -6,8,-8,2
+ 7,4,0,-3
+ -2,1,8,-2
+ 6,5,0,4
+ -2,4,-1,-8
+ -2,-8,2,-1
+ -2,-3,-3,8
+ 6,8,6,-4
+ -8,4,4,8
+ -6,-1,-4,6
+ 0,0,4,-4
+ -3,1,5,-1
+ 0,2,-7,-2
+ -7,-7,-3,-7
+ 0,7,-7,-8
+ -3,1,-2,-2
+ 7,6,-5,-8
+ -1,3,0,3
+ -8,-5,4,7
+ 7,-2,-2,-6
+ -6,2,8,7
+ 7,-6,-6,-1
+ -2,-8,-4,-2
+ 3,2,1,8
+ -3,-1,4,-4
+ 8,5,7,6
+ 2,2,0,7
+ 5,-6,-3,7
+ -5,4,4,-1
+ -8,0,6,-1
+ -8,5,-1,-1
+ 1,-8,-2,6
+ -8,7,4,-3
+ 4,0,4,-5
+ -7,-8,-3,1
+ 0,0,8,-3
+ 1,-7,1,5
+ -3,4,6,2
+ 4,7,0,3
+ 7,0,3,8
+ -4,2,3,0
+ 7,-8,-7,-7
+ -5,6,0,-2
+ 7,2,-7,7
+ -8,-5,-4,-7
+ 6,-6,-8,3
+ 2,1,2,-7
+ 4,6,-6,5
+ -8,-1,0,6
+ 8,3,-4,2
+ 5,0,6,-2
+ 2,-2,-8,-5
+ -6,4,5,-1
+ 1,3,2,1
+ 4,-2,-7,5
+ -4,-4,3,3
+ -3,2,4,-1
+ 2,5,0,-5
+ 5,5,-5,2
+ -5,8,2,7
+ 8,3,0,3
+ -6,-7,0,-6
+ -8,-6,2,8
+ -1,-7,-2,6
+ 2,0,-8,-7
+ 0,0,-2,-3
+ 0,-1,-2,-4
+ 1,-8,1,-7
+ 1,-6,-7,5
+ 5,0,3,0
+ 5,1,-1,-3
+ 4,0,3,-5
+ 3,1,-1,0
+ 4,2,1,0
+ -3,-6,-1,-7
+ 4,-3,-6,6
+ -4,2,-6,-7
+ -3,1,-7,2
+ 7,-2,6,-7
+ 7,7,0,4
+ -4,-5,-7,2
+ -3,0,-2,6
+ 2,-7,-4,4
+ 0,5,2,3
+ -5,5,7,4
+ 1,3,-8,-4
+ 3,2,4,-6
+ 2,-4,4,1
+ 5,-4,3,7
+ 1,8,-8,2
+ 0,8,-3,0
+ -1,-8,2,-8
+ 8,2,8,4
+ 4,-4,-4,-6
+ 0,-7,4,1
+ -4,-6,-1,0
+ 4,2,5,3
+ -2,6,-8,-3
+ -3,3,6,8
+ 8,-3,3,7
+ -7,0,-8,0
+ -4,8,-1,3
+ -1,-7,0,-1
+ 2,3,0,5
+ -8,4,1,-1
+ 2,-5,-3,-1
+ -2,8,-8,-6
+ -6,8,-8,-8
+ 0,-7,1,4
+ -2,-7,-8,7
+ 7,-2,5,-7
+ -1,-8,1,-6
+ 6,-4,8,5
+ 2,-2,1,-1
+ -7,6,0,-1
+ -5,1,-1,-7
+ -5,-8,2,6
+ 6,-5,7,-2
+ 4,2,0,7
+ 8,6,3,-7
+ -6,0,-5,-5
+ 3,-8,2,3
+ -2,0,-6,-7
+ 4,-3,5,-7
+ -1,6,-1,-3
+ 2,-4,-7,7
+ 0,-5,-4,0
+ 1,-8,0,6
+ 0,2,4,-5
+ 1,-6,-3,5
+ 7,6,-5,0
+ -5,-5,7,2
+ 7,8,5,2
+ -7,-7,4,-8
+ 8,-1,-1,0
+ -7,-7,-3,-3
+ 8,-3,2,4
+ -6,0,1,5
+ 6,2,3,-6
+ -2,2,7,6
+ -7,-6,-1,2
+ -8,7,-4,6
+ 2,-6,0,4
+ 7,4,0,-1
+ -4,-6,7,7
+ 0,0,1,-8
+ -7,6,0,0
+ 6,-4,-8,4
+ 3,2,4,0
+ -6,-2,0,-2
+ -2,6,-8,8
+ -4,-6,-6,-8
+ -1,-1,8,-1
+ 7,4,-4,-6
+ -1,6,2,-1
+ 6,-7,-8,0
+ 6,0,-7,8
+ 0,-1,3,6
+ 4,-5,-8,1
+ 6,-2,-5,6
+ 0,6,-5,7
+ 5,5,8,8
+ 8,-8,3,-3
+ 0,6,0,-4
+ -6,1,1,-6
+ 2,1,8,-6
+ -6,-3,0,0
+ -2,0,6,0
+ -6,0,6,0
+ -3,-5,0,-3
+ -3,3,0,-5
+ -5,3,6,-6
+ -6,0,4,-7
+ -8,0,-2,-6
+ -2,-5,-8,-1
+ 3,5,7,-3
+ 2,-7,-3,7
+ -3,2,-1,1
+ 3,0,4,-8
+ -8,7,6,7
+ -1,-4,1,1
+ -3,-1,1,0
+ 0,-2,1,8
+ 0,6,-6,-1
+ 3,1,-1,-4
+ -1,-1,-1,-1
+ -4,-7,7,7
+ -4,-1,-6,4
+ -7,-3,-2,1
+ 6,0,3,0
+ 2,-2,-2,-1
+ 0,-5,2,6
+ 8,6,-8,-2
+ 7,-2,-1,6
+ 7,7,0,2
+ -4,-3,-1,-2
+ 1,1,-3,3
+ -3,2,1,-7
+ -4,0,-8,0
+ -5,-7,1,2
+ -5,0,4,-4
+ -5,8,-6,-3
+ -3,2,-2,6
+ -7,-1,7,8
+ -1,-3,7,-1
+ 7,1,7,1
+ -1,0,-1,-6
+ -6,-3,4,-1
+ 3,5,2,0
+ -4,4,5,0
+ 0,0,4,-8
+ 4,-1,-8,-4
+ 2,7,2,0
+ 3,-6,3,2
+ -2,-3,-3,7
+ 1,-3,1,1
+ 8,-5,7,1
+ 5,-3,-3,4
+ 0,-3,8,3
+ 0,8,2,5
+ -3,-2,0,5
+ -5,-1,-8,-6
+ -6,8,2,5
+ 8,3,-8,5
+ -4,-8,2,-5
+ 7,0,-1,0
+ 5,5,-8,-7
+ 4,-4,3,3
+ 8,-8,4,0
+ -8,7,-4,-1
+ 4,-3,-2,-5
+ 2,5,5,-7
+ 0,-8,7,6
+ 3,0,5,5
+ -7,-5,3,-8
+ 1,-4,-8,-6
+ -3,3,0,0
+ -1,-8,-1,-8
+ -1,6,0,-8
+ 1,-7,-7,4
+ -7,0,-4,-4
+ -3,5,1,0
+ -8,-5,-6,7
+ 8,0,3,7
+ 5,-4,2,-3
+ 1,6,-2,7
+ -1,1,-6,8
+ 1,3,3,8
+ 6,-5,0,0
+ -6,0,-1,-5
+ 6,5,7,3
+ -1,1,5,2
+ 1,-6,3,-8
+ 8,-5,0,-8
+ 5,-1,-1,5
+ 8,-2,-3,-1
+ 0,-4,4,8
+ -3,8,-8,-6
+ -7,0,2,-4
+ 4,1,6,-6
+ 0,7,6,7
+ 1,-7,-4,6
+ 4,-8,7,6
+ 6,0,5,-7
+ -7,0,8,-4
+ -3,0,0,-3
+ -1,-8,-6,4
+ -6,-8,7,8
+ 8,3,8,0
+ 4,8,3,5
+ -2,-1,0,3
+ 8,-7,3,2
+ 6,3,0,-1
+ -1,-1,-2,-2
+ -7,-6,8,-7
+ -8,-4,-6,-1
+ 3,6,-7,6
+ 1,0,-1,1
+ 2,-8,1,-8
+ -4,5,-7,0
+ 0,-3,2,8
+ -8,0,7,-6
+ 3,-4,-5,2
+ 1,1,-6,-4
+ 7,-7,0,6
+ -7,4,7,-2
+ -5,-6,-3,-5
+ 1,-4,5,3
+ -8,-7,6,4
+ -2,-1,-8,7
+ 7,-1,7,7
+ -8,-6,-3,8
+ 5,8,5,7
+ 4,6,3,6
+ 2,-5,-8,-3
+ 0,1,0,-3
+ -1,-3,7,3
+ 0,0,-5,2
+ 0,-1,0,1
+ 1,2,-1,-8
+ 7,6,-2,0
+ 3,6,3,-1
+ -5,0,-5,2
+ -2,-2,6,-8
+ 6,8,-6,-4
+ 0,-2,-4,-7
+ 3,-5,8,4
+ -8,-8,-4,-8
+ 8,8,7,6
+ 3,-7,-4,1
+ 0,7,-5,-3
+ -5,-4,-5,4
+ 2,-7,7,-7
+ -8,-3,-1,7
+ 0,1,-5,1
+ 2,4,-5,-6
+ 5,7,-1,-4
+ 2,-8,-8,6
+ 8,3,-6,-2
+ 3,-5,-6,-5
+ 2,2,1,-2
+ 4,-2,-3,7
+ 2,-4,-1,7
+ -1,-2,8,3
+ -3,-3,-2,-7
+ 2,-7,0,3
+ -6,7,6,0
+ 7,6,-5,-4
+ 8,-6,-1,8
+ -4,4,4,1
+ -2,0,2,1
+ -3,-4,-6,-3
+ 0,7,-1,2
+ -6,-8,-6,5
+ -6,-2,-3,-1
+ -3,-4,0,0
+ -8,-6,2,2
+ 5,-1,1,-6
+ -2,1,1,-4
+ -7,-4,0,6
+ -8,7,-6,2
+ 2,-6,-4,-4
+ -3,-5,6,6
+ -8,-8,-8,-5
+ 4,6,5,0
+ 5,7,0,-6
+ 0,-5,3,6
+ 5,7,3,6
+ 1,-4,2,2
+ 0,-1,-6,-7
+ -4,-1,-3,-2
+ 3,-3,-2,7
+ 5,-1,-3,3
+ -2,-8,-7,-7
+ -6,0,1,-2
+ 0,0,-3,6
+ 1,4,3,0
+ -5,-6,-4,-2
+ -1,-7,-7,7
+ -3,-3,8,7
+ 0,7,8,3
+ 5,0,8,3
+ -8,1,5,-7
+ -2,-6,-7,0
+ 8,7,-2,4
+ 4,7,-6,7
+ -2,3,2,1
+ -6,6,-4,0
+ 5,-2,-5,-6
+ -6,-8,3,5
+ -1,0,3,1
+ 7,-7,-8,-3
+ -4,-2,4,-8
+ -2,3,-4,0
+ 8,-2,-2,0
+ 7,-2,-3,3
+ 0,2,-8,7
+ 0,0,-8,4
+ -8,8,5,3
+ 3,4,8,7
+ -7,5,4,2
+ -8,-3,-7,0
+ 5,1,1,0
+ -1,-3,-3,4
+ 7,-7,-4,-3
+ -7,0,3,-4
+ 7,-6,7,-6
+ 1,-6,2,-8
+ 3,-1,-4,5
+ 0,4,-5,-5
+ 0,-8,7,8
+ -2,0,3,-1
+ 8,0,-5,-2
+ -3,2,2,7
+ -3,0,4,-4
+ 6,5,0,-3
+ -7,2,-3,-8
+ 1,5,-2,-4
+ -3,-8,8,-2
+ -5,7,5,-1
+ 0,3,6,2
+ -8,8,7,8
+ 5,-3,7,7
+ -5,-2,5,-2
+ 4,7,0,0
+ 0,7,1,3
+ -5,-8,-5,5
+ 6,-8,1,-2
+ 6,7,-2,5
+ -4,7,0,-8
+ 0,6,1,-1
+ 5,0,-4,6
+ 0,-3,-3,8
+ -8,-6,5,2
+ 7,-3,-6,-3
+ -6,-7,-2,-8
+ 6,3,4,-6
+ 1,0,-2,8
+ 0,-6,3,6
+ 7,3,2,7
+ 5,-8,-5,0
+ 6,3,0,5
+ -4,-3,7,1
+ 0,-2,-7,-5
+ 0,8,4,-7
+ -8,-4,-3,-4
+ -2,4,1,0
+ -2,-5,5,1
+ -8,5,-7,-7
+ 4,-3,5,7
+ -1,-5,8,0
+ 0,5,2,0
+ -5,2,7,-1
+ 8,6,6,-4

A day25.lisp => day25.lisp +89 -0
@@ 0,0 1,89 @@
+ (in-package :aoc18)
+ 
+ (defstruct p4
+   (x 0 :type fixnum)
+   (y 0 :type fixnum)
+   (z 0 :type fixnum)
+   (w 0 :type fixnum))
+ 
+ (defun p4-m-dist (p1 p2)
+   (+ (abs (- (p4-x p1) (p4-x p2)))
+      (abs (- (p4-y p1) (p4-y p2)))
+      (abs (- (p4-z p1) (p4-z p2)))
+      (abs (- (p4-w p1) (p4-w p2)))))
+ 
+ (defun parse-p4 (line)
+   (cl-ppcre:register-groups-bind ((#'parse-integer x y z w)) ("(.*),(.*),(.*),(.*)" line)
+     (make-p4 :x x :y y :z z :w w)))
+ 
+ (defun make-single-constelation (p)
+   (let ((c (make-hash-table :test #'equalp)))
+     (setf (gethash p c) t)
+     c))
+ 
+ (defun read-day25-input (path)
+   (let ((l (mapcar #'make-single-constelation (mapcar #'parse-p4 (read-lines path))))
+ 	(set (make-hash-table :test #'equalp)))
+     (loop for c in l do
+ 	 (setf (gethash c set) t))
+     set))
+ 
+ (defun print-constelation (c)
+   (format t "constelation of size ~a:~%" (hash-table-count c))
+   (loop for p being the hash-key of c do
+        (format t "  ~a~%" p))
+   (format t "~%"))
+ 
+ (defun print-constelations (set)
+   (loop for c being the hash-key of set do
+        (loop for p being the hash-key of c do
+ 	    (format t "~a" p))
+        (format t "~%")))
+ 
+ (defun in-constelation (p1 p2)
+   (<= (p4-m-dist p1 p2) 3))
+ 
+ (defun in-same-constelation (c1 c2)
+   (loop for p1 being the hash-key of c1 do
+        (loop for p2 being the hash-key of c2 do
+ 	    (when (in-constelation p1 p2)
+ 	      ;(format t "~a ~a close ~a~%" p1 p2 (p4-m-dist p1 p2))
+ 	      (return-from in-same-constelation t)))))
+ 
+ (defun merge-constelations (c1 c2)
+   (let ((c (make-hash-table :test #'equalp)))
+     (loop for p being the hash-keys of c1 do
+ 	 (setf (gethash p c) t))
+     (loop for p being the hash-keys of c2 do
+ 	 (setf (gethash p c) t))
+     c))
+ 
+ (defun find-all-in (con all)
+ 
+   (let ((rest (alexandria:copy-hash-table all))
+ 	(current (alexandria:copy-hash-table con))
+ 	(prev-size 0))
+     (loop while (/= prev-size (hash-table-count current)) do
+ 	 (setf prev-size (hash-table-count current))
+ 	 (let ((new-rest (make-hash-table :test #'equalp)))
+ 	   (loop for c being the hash-keys of rest do
+ 		(if (in-same-constelation current c)
+ 		    (setf current (merge-constelations current c))
+ 		    (setf (gethash c new-rest) t)))
+ 	   (setf rest new-rest)))
+     (values current rest)))
+ 
+ (defun find-all-constelations (in)
+   (let ((ret (make-hash-table :test #'equalp))
+ 	(rest (alexandria:copy-hash-table in)))
+     (loop while (> (hash-table-count rest) 0) do
+ 	 (block tmp
+ 	   (loop for c being the hash-key of rest do
+ 		(multiple-value-bind (c r) (find-all-in c rest)
+ 		  (setf (gethash c ret) t
+ 			rest r)
+ 		  (return-from tmp)))))
+     ret))
+ 
+ (test day25
+   (is (= 367 (hash-table-count (find-all-constelations (read-day25-input "day25.input"))))))