adventofcode2022

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

commit 95accd44e0c22624d279fa1ef155f93460230761
parent 5523e6dd2ef81bc0c640df1bc6089e6ac3d1d2ea
Author: Lukas Henkel <lh@entf.net>
Date:   Tue, 13 Dec 2022 22:34:15 +0100

Day 13 task 1

Diffstat:
Madventofcode2022.asd | 12+++++++++---
Ainput/day13.txt | 449+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/day13.lisp | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
At/day13.lisp | 49+++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 561 insertions(+), 3 deletions(-)

diff --git a/adventofcode2022.asd b/adventofcode2022.asd @@ -5,7 +5,11 @@ :licence "AGPLv3" :serial t :pathname "src" - :depends-on ("trivia" "str" "queues" "queues.simple-queue") + :depends-on ("trivia" + "str" + "queues" + "queues.simple-queue" + "binding-arrows") :components ((:file "main") (:file "day01") (:file "day02") @@ -18,7 +22,8 @@ (:file "day09") (:file "day10") (:file "day11") - (:file "day12"))) + (:file "day12") + (:file "day13"))) (defsystem "adventofcode2022/test" :description "My solutions to the advent of code 2022" @@ -40,4 +45,5 @@ (:file "day09") (:file "day10") (:file "day11") - (:file "day12"))) + (:file "day12") + (:file "day13"))) diff --git a/input/day13.txt b/input/day13.txt @@ -0,0 +1,449 @@ +[[9,2],[],[10,[6,1],5,4]] +[[[9,[],3],[6],1],[[1],[[9,1],0,7,10],2,0]] + +[[[[9,0,4,8,4],[10,6],[9,9],[1,2]],2,2],[10,[[10,9,5,4,5]],[[10,7,1],[]],[[2,1,6],[2,6],0],10],[0,1,[2,4,[1,0,10],[4,1,1,8,5],2],10]] +[[[6,6],8,6],[3,[0,10],9,9],[6,3,7,2]] + +[[[],[3,2,10]]] +[[[],2,[],1,[4,1]],[3,[[8,4,0,7,8],4,2]],[[9,[2,1,8,2],[6,0,3,1,1]],4],[10,2,2]] + +[[],[],[2,10,[10,[7,8,9],[1,10,2],[0,9,10,5,4]],[9],1]] +[[0,[7],9],[[[7,7]],4,[9,2,[]],1]] + +[[[10,[7]],[[3,7],[3,1,1,7],[],[7,4,2,3,1],[10]],2,[3,9,[3,4,4]]],[1,7,[[7,0,4],3,10,[2,1,5,4],1],[[8],3]]] +[[4],[],[2,4],[5,10,[[5],[]],6,[]],[8,[[3,2,5],1]]] + +[[1,[3,[6,5],[0]],[10,[0,3],0,[7,5,7,7,4],3],4,6],[],[]] +[[6],[[1,[3],[4],[10,6,10,6,9]],5,1]] + +[[5,5,9,[[],[3,3,3,2,1]]],[0,1],[[[],[0]],[[2],[1,0,0,3],[5,10,8,1]],[9,3,4,[3,3],[5,9]],[[],10]],[[9,6,2,1,4]],[0,[[6,2,10,8]],1,[[4],6],[]]] +[[8,[[4]],[0,[7,10,3],[1,1,0,3],[7,7,1,0,2],7]],[[[7,8,7],[2,8,0],[],[1,8,0]],[[],[],[5,8,6]],5],[0,[[7,10,3,3],0],3,[4,2,6],[0]],[9,[2]],[[],[]]] + +[[[7,[10],1]],[[[3,8,10],[6,1]],[3],5,4,6],[[[6,4,3,3,5],[3,10],[],[7,5,0,9,4],[7,0]],9,5,[[2,5,2,10,9],[1],7]]] +[[[3,[4,8,3],[2,0,2],1],[8,5,[8,1,10,10],0],6,[2,[1,2,7]],[]],[5,[[8,3,3],[]],5],[[0,[6,0,7,8,9],[2,2,7,9],[6,10,7]],4]] + +[[[[],[6,4,8,8,9]]]] +[[9,[2,[6,5],[9,8,1,8],[4,6],[1,7,4,4,4]],[[],0],[2,[7,3,2,10,6],7,0]],[7,3,[[3],5,1,[6,5,0,7],[5]],1,[[0,8,4,2]]],[]] + +[[5,[[2,7],[8,9,0,5,9]],7,2],[7,[[10],[5,6],[]],4],[],[]] +[[],[[1,[0,2],[],[4],[5]],8],[[2,[5,10,7,3,3],4,1],[5,[]],3]] + +[4,0,3,6,6] +[4,0,3,6] + +[[[[9,9,8,3]],[[0,3,6],1],2],[6,[2,4,7],[1]]] +[[[[4,2,2,7],[5,10,8,10],[10,10],0],1,9,[3,8,0,5],[[8,7,8,1,10],[0],[7,5],[2,1,8]]],[7],[3,[[]]]] + +[[[[6,2,5,4],8,8,2],[[3,10,1,4,1],8],[]],[[6]]] +[[7,1],[[8,[]],[2,[2,7,0,3,10]],[8]]] + +[[3,10,10,4],[1],[2,[[8,9,5,9,10],[7,9],[3]],2,[3,7]],[6,[[1,1,4,6,1]]],[3,2]] +[[[0,[10,1],9,0],0]] + +[[[6],3],[0,7,2],[[],1,[3,10,[],[8]]]] +[[8,4,5,[1,[3,3,6],[7,2,4],[],[3]]],[0,[5,2,7],8,[[8,2,1,3,8],9,[4,5,7,9],2,[]]]] + +[[[[],9,[],[6,5,5,2]],7,[[0,3]],[],5],[8,[6],[1,[0,6,8,1,3],[6,10,4]]],[7],[]] +[[[5,[1,3,8],[2],[]]],[3,0,[0,[3,1],[8,5,9,6],5],[2,10],9],[[4,5,[]],[],[]],[],[2,[8]]] + +[[3],[2],[[9,[10,3,7,4,6]],5,0,[6,4,[8,3,8,7],6],[[0,9],7,[],10,[]]],[[[],[2,4,9],[5,10,0]],[9,[10]],[[2,2,1,1,2],10,1,1,3],[2,[6,3],0],[10,3,[10,8,6,2]]],[0,[5,[10,2,1],[10,3,9,7],3,2],[8,10,0,[6]],4]] +[[],[[[1,5,9],[1,2],[0,8,9,6,7],[0,2,0,10]],[9],3,2],[],[[8,6,[8,5,6,6]],[9,[2],[10]],[],9,6]] + +[[2,5,[0,5,1]],[7],[[7,8],[]]] +[[1,[1,[2,1,2],[5,6,8],3,[3,9]],3,[[10,1,8,0,8],[4,4,8,4,7],[8,8,5,8]]],[5,3,6]] + +[[7],[[[],[],[],[6,10,10,2],[4,6]]],[3,[[6,6,5,8,1],[0,8],[5,0],[3,4,5]]],[4,8,[2,7]],[6,6]] +[[5]] + +[[[[4,8,7,2]]],[[],3,[],9],[9,[],1,10,8],[9,[[],[3,0,8,10,0],5],[]],[0]] +[[1,4,4,[]],[[],9,[[0],[6,3],0,5,[10,7,9]],[]],[],[[[5,0,1],[]],1,[0],[[5,5,4,9,10],[6,2,8,7,5]]],[8,[[7,4],2,[6,3,1,8],[9,8,10,6]]]] + +[[1,[[2,3,8,8,8],[5,2],[1,0,10,7,3]],[[10],[8,0,4,4]],[[4,2,0,2],0,4]],[[[1,0,1]]],[[],9]] +[[[10,9,[1,1,3],8,[10]],3,[7],[],[6,6]],[5,1,7,9,[7]],[[9],9,8],[0,1,[[2,1,2,9],9],[],10]] + +[[[[5],4],[[7,6,7,6,8],[0],[8,6,7,2,2],2,1],10,[[3,4,4]],2],[],[9,8,[],2]] +[[6,[[3],7,[9,2],1],[],[[6,9,8,7,0],1,[9,10],[5,9,7,1],5],[]]] + +[] +[[[[5],[6,4,6,1],[5,2,0],[5,9]],[[5],6,1],8]] + +[[[[7,0],4],10,3,5],[[3],5]] +[[[],[10,6,[4,9]],7],[0,[4],[[]]],[7,1,7,3,[[10],[1,6]]],[[],[5,[9,10],[],5],2,[5,0,7,4,9]],[[],3,[[8,1,10,3,5],[],3,9,[3,4,1,5]]]] + +[[3,[[10],8]],[2],[[[10],0,4]],[1,5,7,2]] +[[2,[],[4,[4,8,9,6]],7],[4],[7],[0],[5,[]]] + +[[8],[[[6,2,0],[1,2,5,4,1],[5,10],7],8]] +[[],[[[5]],[3,4,5,6],[[5,4],[2,4],4],7],[4],[]] + +[[3,6],[[[7,2,2,0,6],[]],5,[[4,8],[6,8,6,1,8],[2],[4,4,9,5]],9,7]] +[[1,6,8,5,10],[[[],[10,9],2,4]],[[[1,1,9],5,5,5],[[1],2],10,[4]],[1]] + +[[],[2,6,[[],10,[1,4,4]],2,[2,10]],[5,[4,0,[4,4,2,8,6],3]],[0,3]] +[[[],5,6,3],[9,9,8,1]] + +[[5,[[3,10,1,6,6],[5,3,7,4],[6,7,5,9],2,[]],[4]],[2,1,3],[[],9,[4,9,[],2,[6,4]]]] +[[[[4,4,1],1,3],[[1,1]],7,[0,6,4,10,[0,3]],[[],7]]] + +[[],[[[7],[8,8,3,6],6,3,[]],10,[[],[6,0,8,0,1],7,0,[2,6,0,9,8]]],[],[[[2,7],[5,6,9,6,10],4,[2,0,1]],6,[]]] +[[2,[[8,3,6],[],5]],[4,[[6,1],[]]],[[[8,9,3]]],[[[2,1],[2,10,0]],[[],[3,1],[],6,5]],[[[2,2]],[],4,6]] + +[[[],7,7],[[[5,2,4,9],5],2,[9],0],[[8,[6],[10,0],10]],[4,9,[8,0,3],[9,5,8,5]]] +[[[[4],10,5],[0],[[2,4,7],1,8,9],[10,[10,2,0,5]],[[4,4],[0,3,6,0,7],5,1]],[[6,7,1,5,5],3,[[],[2,4,4,9],10],10,6],[],[6,[6,5],6,2,3],[[[4,9,5],5,1,[]],7,[10,9,[0,7],5],2]] + +[[2,[[],[7,4,4],1],[[3,3,5,4,0],3],3,9],[[[0,6],3],4],[[[1,0,6,2],[4,9]],[5,[4,8],6],0,[9,4,6]],[[[9,0,5,5]],[[9],1,10],[[2,1]]],[10]] +[[[5],8,[7,8,[3,7,10]]]] + +[[[2,5],[5,[8],[6,5,10],10,[0,7]]],[[5],[[4,7,1],[10,10,7,6,4],[0,6,8],8],[[4,0],5],8]] +[[10,4,10,5],[4,[[10,9,3,4,6]]],[]] + +[[1,9,7,6],[[9,[4,10,8,6],9,3],5,[7,7,2,[],[]],2],[[4,7,[]],8,2],[[4,[0,9,5,5,3],[4,6,10,3],2,5],[[8,0,2,2,7]],4]] +[[[[6],[1,8,4],2,9,0],[[0,4,7,9],[10,2,3],[]],0],[6]] + +[[[7,5]],[],[8,6,[[1,5,9,0,1],[3,2,6],[10,2,1],4]],[5],[[[2,4],[8,2,2]],[[5,10],10],5,3,[2,1,9,9,0]]] +[[[[3,6,2,8]],[8],[5,[2,10,4],[7,3,0,9],10,0]],[0],[],[7,[[5,8],[2],4],7,[3,5]]] + +[[[[],0,3,4],[[1,3,8,4,3]],[0]],[[],[[3,4,8,9],0,8,[5,3,4]]],[8,7],[[5,[0],[6,7,4]],[],[[1,7,4,10,10]],5]] +[[[6,[5,8,2,10,10],[3,5]],7,[],7,[0,[2,9,0,7],[2,2]]],[10,6,[0,3,[4,9],1,4]]] + +[[],[[[7,9,10],[7,5,6,0,2],1,0],[6],5,[[0],[0,2,8],1]],[7,7,6,[[1],[9],7],[1,3,[10,5,7,6]]],[[],[8,5,8,[9]],9,8],[]] +[[],[[8,10,[6,9,4,8,10],[7],[1,5]],[[2,3],3,1,7],5,9,[[4,8,5]]]] + +[[8]] +[[5,8,[[],[10,5,4]],[2,10,9,10,6]],[5,3,[7],[[],9,[0,3,2],[4,3,6],3]],[2,9,5,9,[5]]] + +[[[[10,1,10,5]],[7,[2,1,5,9,1],0,9],[9,6],9],[10,7],[10,[[],6,[0,1,0,0,7]],[2]],[[[10],9],[[1],4,10,[7,3,2],7],5,[],0]] +[[[7],10,5,6,8],[[[5,1,5]],[[6,6,7,3,8],[],3],10],[3,6,6],[0,[6,3,[1,1,4,9,5],5,[1,0,7,5]],0]] + +[[[[4,3,5,9,9],0,0,7,[5,10,0,3,1]],10,[],[8]]] +[[2,[9]],[],[0,10],[]] + +[[[[0,9,8,3,4],[6,3,3,9],6,[8,6,8]],2,9],[[[6,8,3,4,5],2,5,9,0],1,[5,10,[6],6],[]],[2],[[[4,3,4],[1,10,5,1,10],[5],[0,8],[4,4,1,4]]],[[],[6],[3,10,4,5]]] +[[0],[[2],[[5],[6,6,9,6],[2,3,10,10,4]],0,[[0,7],6,[8]]],[],[1,[[7,0],[5,8,5,10]],[[0,9,8,10,7],[9,3,2,5]],9]] + +[[[3],[],6,[],6],[[6,[7],8],4,2,1],[],[6],[]] +[[[[9,2,7]],[[4,9,10,4]],[1,[4,8,2,3,6],[6,3,1,3],[3,6]]],[[],5,[10,7,[1,3],4,[1,1,5,8,5]],[[5,2,4]]],[[3,[9]]],[[[1,10],6,[],7,1],[[9,1,2],[9],4],8],[2,3,0,[]]] + +[[[10,[9],3],[],4,1],[[],[[1,1],6],[0,10,2,2,[]]],[[0,1,8,2],[2,[],5,[6,6]]],[3,10]] +[[7],[10,1],[0,4]] + +[[[3,[8,2,7],5,5,8],7,[8,5,[4,5,3,7,1],5],[7,5]],[],[6,6,4],[]] +[[[[5,2,3,9],[3,9,4,3,1],5],[2],5,[[8,3],[],5]],[],[6,[10],0,4],[[[2],[10,6],[],8,[7]],[[3,5,8]]],[10,[[],[],0,5],[],[1,[4,3],8],8]] + +[[1,0],[],[[]]] +[[[],6,[],3],[[[10,8,1,1,8]],[5,7,1,1],[8,[9,6,2],10,[3,1],0],[]],[[8,7,[7]]],[5]] + +[[[9],[2],6,3],[[[3,2,3,1]],1,[0]],[[0,1,[5,9,8,1]],[7,[9,6,4,2,3],9,7],[],3],[],[[7,8,[6]]]] +[[],[[9,[10,5,0,6],3],[0],7,2,[[10,4,4],[2,1],2,[0,6,6,7,4],10]],[8],[1,5,[[8],[1,9,2,2],7],7,8],[]] + +[[],[0,10,1,3,1],[[[8,4,0,4,0]],3],[],[3]] +[[[0,[1,0]],1,[[6,3,3,8],[],9,10]],[5,[[7,10],[6,2,4,0,7],1,[]],[10,9,[1,1,4,3],[4],0]],[[],[],[]]] + +[[[[4],[7],[5,9,8,10,4],[10,8,7,3]]],[3],[[],0,1,9],[2,7,3,[[5,4,3],1,[3,4,6,2,7]],0]] +[[7,7,[1,[0,0,0,3,1],[9,2],[6,1,2,7],[6,3,0]],[4,[10,0]],[5]],[]] + +[[[9],10,[]],[2]] +[[2,4,4,[[5,2,5,2,7],8]]] + +[[[[2,5],5,[3,4,8,5,8],[8,6]]],[[6,[8],3],8],[],[0,3,[9,4,[8,5,0,10,5],[1,6,1]],6,[[3,6],2,4]]] +[[0,[[5,7,10]],[5,9,4,[],8],5],[[[8,1,8],[5,1]],[[7,10,9,7]],3,[0],1],[5,[3],[1,[],[3,8,4],0],[[],1,[5,9,2,4,5]]],[],[[[0,5,2],1,6,[3]],[8,[],[],[3,9]],9,7,[[1],[6,0,4,6],1,[0,3,5]]]] + +[[7,[[2]],[4,[0,0],0,[2,9,1,8,8],1],5]] +[[8,6,0,4,[]],[[7,5,8],[]],[],[[[8,0,3,2],[8],6,[0,9,4],[0,5,0,7]]],[[[6,3],3,[],[8,3],[1,7]]]] + +[[[6,[8,5,2],[2,6,3,0],[8],2],[[3,5],[2,9]],[],[[6,5,1],[3,10,10],3],8]] +[[[[4,6,8,8,7],1,7],7,[[9,6,4,10]]],[3,8,[6,3]],[8,[[5,3,9],[9],[4,7,9,5],[0,2,0,1,9]]]] + +[[[[1,5,2,0]],8,7],[[[3,6,4,7],10,[8,4,3,4],[],0],2,[10,5,8,9,[1,0]],9],[[[5,3],[3,6,3,4],10,[8,8],4],10],[10,[8,2]],[7]] +[[0,3,[10,4,1],[3,6,7],[]]] + +[[],[4,0,8]] +[[],[[8,[0,0],1,[2,0,6,8],7]]] + +[[[3,[5]],6,6],[],[[8,0,4,8,8],[4,9,[],0],[3,[0,8,6],[6,2,1],[2,0,8,8,3]],[10,[1],1,[],4]]] +[[3,[4,[6,10,4,9],[],2],[[2,0,6,5,8],1,[],5],[8,[1,0]]],[[[],4],6],[9,[2],[2,[5,3,9,0],[1],8,8]]] + +[[9,0],[[[1,0]],[[2,1,8],9,7,0],3,[8]],[10],[],[]] +[[[[7,9,5,8],4,7]],[9,[[10],3,[],[2,7,3]],10,[7,[6],[10]]],[[[3],[9,0]],[],[],6],[[[0],[]],[4,4,[],2,[4,0,3]],5,2]] + +[[[[7,6,9,5,5],[7,1,4],[8,8,9,5,8],7],2,5,[10]]] +[[[2,0],[3],[2]]] + +[[],[[[0,8,6,0,3]],10,10],[[[2,4],8],2],[8,[6,[4,5,1,7,8]],3,[1,[9],9],2]] +[[1,[9,[],9,[4],0],[10],0,[2,3,6,[7,7],2]],[[[8,2,1]],6,[2,[9,7,5,3,1],6],[0,2,8,[0,6,8]]],[]] + +[[6,[6,[3,6,0,1],9,9,3]],[3,[1]],[[[6],8,[2,9,4,8,4],9,10],8]] +[[[[1,0],[5,8],0,1],0,[[8]],5],[[7,[10,3,9,8,1]],[2,[4,0,8]],[3,2,[7,5,0]]]] + +[[[3,10,4,[9,1,10],9],6]] +[[],[[[3,9,7]],0,[[9,0,3],[2,9,1,0,4]]],[[[0,9,3,7,6],2],5,0,[]],[5,[],1,0,[[2,3,9,4,1],[3]]]] + +[[6,[9,[0,9,1,9],[0,5],[2,2,1,7,9],[10,4,2,5,2]],0,[2],9],[[[5,1,4],8,8],[4,[],[2,7,5,3],[6,9,6],7],[[8,6,4,9,1]]]] +[[4,4],[],[10,[[10,8,2,5],[8,8,8,0],6,6],5,9,6],[],[[9,[9,8],[9,6,0,3,2],1,[0,4,3,1,8]],[[6,7,4],[],[0],[10,7,0,8]],[],7]] + +[[0],[],[9,[1,[7,0,1,1],1,9,[2,6,6]],7,[2,1,9],[10,4,8]]] +[[[8,[5,2,3,6],[9,7]],1,7,5],[[2,[8,10,5,0]],1,[[],2,[3,4],[5],[4,3,2,5,9]]],[0,[]],[[8,5],[4,3,0,5]]] + +[[[8,2,[4,9,6,2,10]],7],[],[9],[7,[0,[7]],7,[[2,7]],7]] +[[[0,8,1],[7,[3,0,4,1],[9,6,2],[2]],9,7,[[],4,9]]] + +[[],[0,[[8,1,7]],[0,7,[2,5,2],[8,1,0,3,2],5]],[1,0,2,6]] +[[[4],7],[[1,[2],[3,1,4],[8,8,2,3,4]],10],[9,[3,[7,1],10,[3,3,5,8,10],0],[9,2],2],[],[]] + +[[7,[],[[],[10],3]],[],[3,[[0,8,0],1]],[0,6,[8,3,8,8]],[3,7,[5],3,[9]]] +[[1,[[],[0,6,6],2,[],[7,9]]],[],[[4,1,3],[5],[[4,6,7,9],[5]]]] + +[[1,[],3],[[0,[2,1,1,4,8]]]] +[[[[8,8,5,10,2],[8,7,10,0],7,[8,0],[2,0,0,8]]],[7],[]] + +[[[9,[3,8],5,8,3],10,[],3,[]],[2,1,5,6],[9,0,4,[[7,4,6,3,6]]],[],[0,[5,8,[10,10,3]]]] +[[9],[[[8],[],2,4,[3,0,9]],9,5,3,[]],[7,[[0],[6,4,0,1],[],[5]],[10,[4,6,4,5,2]]]] + +[[[3,[1,9,7,10],[7]],[[2],9,[],7],7],[0,10,7,[[0],5,[8,0,0],[4,3,2,6,9],[]],[[7,2,5,3,7],2,[]]]] +[[[8,8]],[],[[],2,[[9,5]],9],[[[7],[8,1,10,1,0],2],0,8,1],[[0],[[]],10,[[2,2,7,7,5],[]]]] + +[[],[],[[[4,2,9,9,0],[5]],5,10],[[[10,2]],10,9,[6,[8,7,5],5]],[10,[5,7,10,10],3,[[8],10],8]] +[[8],[0,8]] + +[[8,4,8]] +[[10,0,[[3,8],[1]],7]] + +[[1,5,3,[5,[],[9,2,8,6],3]],[9,[9,[9,1],[10,3,8,1,7]]],[0,0,6,3]] +[[3,[[4,2,3,5,9]]],[9,2,[[2,10,9,1,5]]],[[[10],10,[10,5]],[[3,7],[6]]],[]] + +[[],[8,1,[1],0,2],[0]] +[[],[6,0,6],[[2,1,7,[4,1],5]],[]] + +[[[2,8,0,8],4,5],[10,[[],3,[8,7,2]],4,[],1],[[2,[3,7,6],[6,9,7]],6,2,[[6,7],1,[],4],[8,[6,6,10,7],4,[],9]]] +[[[1],3]] + +[[[9]],[9],[],[8],[[[9,5,3,7,10],10],6,[1],1]] +[[10,9,1],[0,2,3,[[9,1,10,6,5]],8],[],[10,[[],[10]]],[[0]]] + +[[],[1,[[]],6,[6,[9,1,1,8,10],[6,8,10,9],[2,6,7,5,1]],[[2,10,7,6],[4],[3,6]]],[2,[8,[9,2,1,8,3]],[0,4],[[3]]]] +[[2,[]],[5,1],[7],[]] + +[[[],7]] +[[],[0,0,[[9,3,10],10]]] + +[[[],[[],2,[],[10]]],[[[0]]],[2,[[2,5],[]],[2,[4,10,8,5]],1]] +[[[10,[],3],1,5,8,[6,6,0,5]],[7,3,7],[]] + +[[10],[[7,8,[1,8,0,2,5],1,10],4,[7,5,9],[]],[9,3,[]],[[2,[0,1,4,6,7],[5,4]],[]]] +[[[7],[[1,0,7,3,4],9,1,[8,5,8,9,0]],5,[[],3,[6,9],4,[5,1,8]],[[1],8,0,[]]]] + +[[[[4]],[[9]],6,1,[[3]]]] +[[3,[[9,7,4,0,7],[7,8,10,0],[1,9,10,9],[2,10],4],4,[9],[]],[[9,[10,10,5],4,[7,4,4,8],2],[[8,5,6,10],[5,3,2]],0,0,4],[[8,9,10,[7]],[[3,10,3,3,6]],[[1,0,1,6],7,2],[2]],[8,[4,9,[3],[6,1,0,1]],7],[[9,10,[]],9,10,[]]] + +[[2,6],[3],[[8],3]] +[[[[5,9,7,9,6],[1],[10,10,5,10],1,6],[4],9,10]] + +[[[[2,4,4]],2,[]],[[[4],[9,6,7,1],1,2,[8,7,8,5]],6,[1,[1,5],[2,10,3]]],[[0],[10,[6,0,6,9,1],[2,4,1],[8,10]],[[5,3],[2,8],7,2,[]],0,5],[6,5,[],7]] +[[[1,9,[]],3,[[5,6,2]],[4,[1,1,5]]],[],[9,3,0],[10,[4],[[5]],[4,8]]] + +[[],[[9,0,2,9,9]]] +[[[[0,5],1,[4,8,10,3]],6,[[7,3,7,0],[6],10,[2]]]] + +[[9,10,[[2,7,3,7,3],[1,1,9,3,0],9,4],4,[[],9,[2,3,10,9]]],[[8],8,[[9,2,3,1],[5]]],[3,6,1,[[1],1,[7,2],4,3]],[[9,9]],[[[],5,[2,1,7,8]],0]] +[[1],[[[4,6,6,3],[5,2,8,7,0]]],[[]],[0,[[0,8,7,10,3],0,8],[],[0,4,[2,0,2,7]]]] + +[[[[]],9,[0,1,8]]] +[[[[0]],9,7,0,[10,9,[4,3,5,2,0],8]],[[7,[5,6,10,1,7]],[8,[7,7,4],[9,7,6,5,8]]]] + +[[0,[[3,6,5,3,5],[5,10,3],[8,10,4,6],7],0],[8,3,[[],[],4,5,10],[5,8],[4,2,[6]]],[5,[[7,6],[10,6,5],[3],[7]],[[1,1,10,4]]],[[2,5,[4,10,5]],[[0,8,0],5,6,6,[]],[[10,6,6,7,1],[7,1],9,1],10]] +[[[],[[10,10,8,2,3],1,[4,9,2,8,4],1],4,[[0,4,10,7],[1,9,1]]]] + +[[[5,4,0,[6,4,1,7]],[[6],[2]],2,[[5,5,10]],10],[]] +[[[[7],10,[9,5,1,6,1],4],[],[[],0,[9,9,9,4]],5,[3,[9,7,0,4,4]]],[[[10,9,4],5,[10,9],8,[10,3]],[[7,1],[4]],[[3,5,2,9],2],[[8,8,9],[],1],5]] + +[[[[4,9],[],7,[5,2,6,3,6]],[9,[2,0,8],10],[[],6,[6,1,8,8,8],[4,0,9,9]],[],[]],[[[5,10,6,9,9],6],[9,1],9,6],[]] +[[[7]],[[[10],[6,9,0,7,0],[9,6,8,10,4]],[[4,8],[5,0,3]],[4],6]] + +[[6,[[0],[4,8,8],3],5]] +[[3],[4,10,10,[[1,4,4,3]],10],[3,3,[5],[7]],[9]] + +[[[[10,5],[],1],9],[[5],[4,[],3,[0,4]],6,1,6],[[8],7,[[6,2,5,0]]],[[6,7,1,[4,0,7,8],[2,10,1,3]],[3],[]],[[2,4],[[8,6,10,7,3],7],8,0]] +[[[[10,2,2],[9,0,6,9],[3,3,10,8,3],6]],[]] + +[[[5],[[8,0,3,3,10]]]] +[[],[5,[[0,4],3,9],[[10,9,9],[6,10]],[]],[2,[5,[4,2,4,6,8],[6,3,6],[]],10,2],[[3,[5,7,5,3,1],5,4,3],[1]]] + +[[[[2,5],5,[],10,0]]] +[[[[2,2],5,8],[0],2,10,3]] + +[[[5,[2,8,0,4,7]],[5],10,0,0],[[2,[9]]]] +[[[1,4,9,10],2,6,[9,[4,9,6],[2,8]]]] + +[[[9],8],[[[0,9,4],6,[],9],2,8,[6,[3,3,0]]],[7,6,7],[[[0],[10],[7,3,2,5,3]],0,[9,[1],[6]],6],[[[5,8],[5,6],0,1],1,3,7]] +[[[0,[],3],7,9],[6,[]]] + +[[[3,[7,5],3,[7,6,3,5,10]],[2,3,8]],[3,9,[],[],[3,2,7]],[0,3,4,1,4]] +[[[[],[10,5,9,10,5],5],5,[],[[8,4],[7,3,2,4],8],3],[],[5,9,[7],6]] + +[[7,6],[[],[3,7],[6,1,[3,2,9],7,[7,4]]],[[0,6]],[[1,0,[6,5,4,3],[1,3,4,2]],0]] +[[],[],[9,7],[[6],[2,[3,5,9]],[8,[2],[0,9,4,6,9],[4,1],1]]] + +[[3,9,5,[6,[1,4,4,5],[8,4,2,6],0]],[[[2,9],8,[5,8,10,10],10,1],3,5,8]] +[[[[10,10,5]]],[],[]] + +[[[9,9,10],[1,[],[],[8,4,1,8],2],4]] +[[9,[[6,7],[10,7]],[]],[],[9,4]] + +[[1,6,[],[[1,8,2],3,3,[0,8,6,5]],[]],[4],[[]],[]] +[[[[0,10],1,7,[]]],[[9,[],[5,8]],2,4,[1,[0,8,7,10]],2],[2,[[4,8,8,5],0],1,[[7,0,9,5,0],[2,4,0,5,0],8,[0,3,5,8]]],[[],[],[]]] + +[[[10],[[],0],3],[[[1,4,3,2],4,[10],8,5],9,[0,0]]] +[[[1,[2,10],[9],[1,9,3,8]],6,0],[9,3,[[2,4,4,5,10],[6,6],7],[[0],9],[3,3]],[],[6,9]] + +[[2,2,[[7,10],[10,5,2,1,10]]]] +[[],[9,[]]] + +[[0,2,6,[[]],[[6,5,5,4,7],[3]]],[4,6,[3,[7,3],2,[6,7,5]],[],[]],[[2],[4,9,[7]],9,6],[10,[],[],[6]],[]] +[[7,3,[4,[0,8,2,8,5],10,9],6],[[6,8,8,[9,9,7,10,2]]],[7,3,[8,[1,10,5,1],[3,7,8]],[[6,3,9,7,7]]]] + +[[[]],[[[7],6,3]]] +[[3],[9,6,1,10],[[]],[[[9],6,10],[[9,2,6,8,8],[8,4],9,[3],1],[7]]] + +[4,4,6,9] +[4,4,6,9,5] + +[[],[[5],[10,9,5,[4,9,9,1],5],[4,[4,5],10]],[9,[[9,2],[6,0,1,8],8,3],[[0]]],[9,[],[6,[],2]]] +[[7,0],[[[8],[6],[5,3,8,7],6,[]],10]] + +[[[],5],[[[3,6,3,3,7],[2,7,7,6],4],[8,[0],5],4]] +[[1,[[6,5,6]],[[5,6,3,3],[7,3,8,7]]],[[[1],9,[7,7,8,0]]],[[2,[8,7,4]],10,2,3],[[],[]]] + +[[[8,10,[4,1,1],[4,0,5,5,9],8],8,9,[1,3]],[]] +[[5,[]],[0,[],[5,9,5,[]]],[],[[5,10,2],[[],[4,3]],[[5,2,9,10,4],[8,3,3]],[[8,3],[3,5],5,[10,5]]]] + +[[[[1,9,5,9],4,[],[7,4,0,10],[4,1]],[[10,3,10,10,10]],[[6,9,3,8,6],1,[7,1,0,4],[5,8,3],10]],[[[2,7],3,7],6,[],10,[6]],[6,7,9],[4],[[7,[],0,[5,1,8],[5,5,2,9]],2,4,9,[3,1,[6,9,9]]]] +[[],[[[3,1,10]],[[8],2,4],9,8]] + +[[[4,1,0,[0,6,0,5],[8,9]],[3]],[1,8,5,[[2,0,5,9,10],7]],[5,8,2,7,[[]]],[[],7]] +[[[[1],3,7,[5,2,6,10,8],8],[[5,0],[4],5],6],[[[2,0,1,9,1],[9,6,8,9,4]],[],[[],[1,5,5,0],[10,9,9,10],3,5]],[[10,[5],5,7,3],2,[2,[],1,[3,10,1,10,5]]],[[],10,[[5,6,8,2]],[8,1,10,8]]] + +[[],[[7,[5],3],1],[6,[],9,[7,[9,5,4,3,4]]]] +[[2,[9,[3,1,6],[],1,[7,4,7,4,0]],7,4],[[[5,0]],[[1,2],[2,10],[]],[5,[],[8,0,0,1,6]],[[7,0],[0,2,7,9]]]] + +[[],[3,10,3,[8,4]],[1,5,8],[],[9,7,2,[9,[3],[4,0,5,5],3],[[9,5,6,8,2],2,[7,4,8,4],8,0]]] +[[0,[4,0,[0]],7],[]] + +[[8,5,[0,[5],[5,9,5]]],[5,[[3,3,5,4],5,1,0,1]],[[[2]],3,2,[[7,7,4,7]]],[5],[[0,5,10],2,[[8,7,1,10,0],[10,3],[6,8,7],[10,2,0]]]] +[[9,[[4,3,7,4,10],[0,8],3,[5,9,9,8],[0,8,8,8,3]],2,6,5],[6,3,[[],[10,5],[1,10],7]]] + +[[],[2],[[3,8,[6,9],[],2],6,[],0,10],[[[9,6],[7,0,10],1,7,1]],[6,4,[10,3,10,[4,7]]]] +[[[]]] + +[[[[5]],4],[[],6,[7,6,[0,5,0,6,2],6,8]]] +[[9,[[7,8,7,1,6],[],[],7],8]] + +[[9],[1,[1,7],[],[[6,7,8],9,[],9,[2,5,8,3,0]],[[4,2]]],[[[4],[8],6,4],[5,[],[6,2],7,[]],[[5,6]],[]],[],[]] +[[9]] + +[[[3],10,1,[]]] +[[5,9,[8,4,[4,5],[2,6]]],[[6,[3],5],6]] + +[[[[6,3,9,5,4],3,[]]],[[1,[5,2],[6]]],[5,4,[[5,8]],[[],[5],[8,0],5]],[]] +[[[[2,1]]],[[[10,9,6,3]],8,[[7,2,5],2,[6],8,[2,0,6,7,8]]]] + +[[9,[4]],[8,[1,10],4,10],[[],5,6]] +[[4,4,[4,[2],[1,2,9,1],[4,5]],5]] + +[[[2,[2],[10,7,10,6],7,[6,8,10,5]],9],[[],[],6],[[5,10,3,[7,10,4,1],7],[[1],[],[],9]],[[1,[8,7,6]],[[0,9]],2,5,[]],[[],1]] +[[9,3,[9,[3,2,9,10,9],[8,8],9,[3,3]]],[[7,10,[7,5,4,5,1]],5,[4,[1,7,4,9,4],7,[3,10,4,2,7]],[],4],[3,1],[0,[7,[]]],[1,[9,10,3]]] + +[[[[],[3,10],[0,7],5,5]],[]] +[[4,[1,[9,5,10,3],[],[2],1],[[6,2,1,10],[8,4,0,10],7,0,[10]],[[9],1,2,[]]],[3],[[[7,2,3],[8,7,7,8],6,8],1,8,7],[10,[10,[9,4,8,9,4],1],8],[3]] + +[[8,[[]]],[5],[[]],[6,6,1,4],[[[9],3,6,[6]],[6,1],8,0]] +[[9,7,10],[[6,2,4],0,[[10],[7,6,6,5],[0,10,5,2],0,[4,7,6,1,9]],[[],0,1],[[5,2],0]],[[0,[5,3,3]],3],[],[[8],4,2,[6]]] + +[[[],[3,9,[5,8,3,7,9],0]],[7,[0,7,[1],5],6],[[2],0,6],[[1,3,[1,1,2,1],9,[0,7,2,8]],[1,[],[10,2,5,9,8]],[9,2,[],8,1],0,[[7,2]]],[4]] +[[[0,7,0,[7],[6,9,9,6,6]],10],[4],[2,0,[[0,4,0,2,5],1,9,10],2],[]] + +[[],[[0,2,[8],[10,7],[2,8,9,6]],2,9,7],[[[]]],[10,4,0,[8,[10,7,0,3],[6,5],[4,1,2,4]]],[10,4,[7,5,[10,4],5],[[6,4,0],7],7]] +[[],[7,[[7,6]]],[8,[10,[2,6],[9,7,0,5,10]],[[8]]],[[[],9,0,[3,5,8],9],5],[2,9]] + +[[[6,5,10],[],7,[[4],[3,9,2,2],8,[4,2,4,1]]],[[[4],[8,10,6,4],8],[],4],[0],[[3,7],5,[[3,8,7,2],[8,10],10,[4,4,7]],6],[2]] +[[0,9,[2,[8,8],[6],9,4]],[8,[2,[5,9],[],[8,10],[1,6,1,0]]],[],[[[0,0,9,4,9],10,2,[5,5,4],4]]] + +[[[],[],[7,2,[3,6,10]],2,9],[7,10],[7,[3,7,[0,1,3],[6,0,4,8,5]]]] +[[6,9,10],[1,[]],[6,1,[3,[3,4,9,8],4],[7]]] + +[[]] +[[],[[],1,1,9],[[],[7,[7,8],2,5,4],1,10,[[6],6,[1]]],[2],[[0,3]]] + +[[[10,5],1,[5,[0],0],[0,9],[4,[0]]]] +[[[[6]],[],[[8,2],[]],9],[10,8,[[2,4,5,10,4],5,[]]]] + +[[6,3,10,[[9,5,7]]],[2]] +[[[[9,6],9],6,[0,6],3],[0,[[],[5,8],[2,9,2]],1,8,[[6],[10,9,5,6],[4,9],2]],[]] + +[[[[4,9,2,1,4],7,0,3,[9,1]],[5]]] +[[[9,[5,8]]],[[[0,4,0,3,7],7],[[],5,3,4],[3,[3,3,4],[6,6,10,6,3],[9],10],[[6,8,4,2,9],10],6],[[[5,3,7,7,3],8,[1],8,6],[1,[8,2,9,2,5],[6,4,1,10],[0,10,10,0,3]]],[9,[[1,1,6,3]],[[1,0,8],4,[9,7,9,4,0],3,0],[5,[2],6,[9,0,6],[5,9,9,2,10]],[3]]] + +[[[5,[],1,3],[5],[6,[6,0,9,8,9],0,6,10],[4]],[]] +[[1,3,8],[[],5],[5,5,[[],[0,9,3,5,8]]]] + +[[[[10],3],4],[],[[10,9,[9],0,1],10],[],[]] +[[10,1],[[[10,5,5],5,[8,6,7,10,4],9,7],6,[[9],5,4,[2,9,9,0,8],0]]] + +[[8,1],[[],[],1]] +[[10,4]] + +[[4]] +[[[[1,6,4,4],[10,6,3,10],7,[9,3,7,6,8],[3,3]],8],[[9,[7],8],[9,[2,8,9],1,3,10],2,1]] + +[[[5,[8],2],[]],[],[6,5]] +[[[4,5]],[3,10,[[10,9,8],[2,6],[6],2],[0,[8]]],[1,[[2,3,8,4,9],[10,3,3,8,7],[5],6],6],[8,1,[[0,3],[2,4]]]] + +[[[5],[3,[]],[9,[0,0,2,4],[10,4,7,9,7]]],[0],[[6,[8,3],6],[[]],[],0,9],[4,4],[6,[1,10],[[10,1,8],[7],[1,9,10,5],[8,0,8,2],0]]] +[[],[[[3]],[[6,6,0],2]],[[7,7,5],0],[[[7,2]],4,[]]] + +[[[],[],[4]]] +[[[4,[6,4,9],[1,6,4,8]]],[[[2,7],2,2]],[1,[[],[8,3],0,2,8]],[7,5,[7,[3,6,5,0]]],[[[],10]]] + +[[6,[[2,7,2,7],0,6,[8,10]]],[[[0],4,0,0,[6,2,7,0]],[5,[5,0],[5,7]]]] +[[9,[[3,6,7,4,2]],8,[[],1,2,[8,5,3,0],[6,4,1,10,5]],[]],[[5,3,[4,10,5],2,[8,1,0,3]]]] + +[[3]] +[[[],[],[[2,4,5,1,9],0,3,2,[3,10,8]],5],[9,5,[5,[5,5,9,7,8],2,6,7]],[[],10],[3,[[8]]]] + +[[6,[[7,1,3],[0,10]],[],[10],9],[[[2,10],5,2,2],10,[8,3,[2],[1,8]],7,[[5],[3,2],[9,9,4,4,1],[7,1,6]]]] +[[],[10],[]] + +[[],[[1],[[10,4,5,8]]]] +[[[[7,1,8,10],9,8],[[1,2,0,1]],[],3,[]],[9,1,[[0,0],2],5],[1,9,[10,6,[10,0,2,10]]]] + +[[],[[9,[5,2,8,5],10],9,7,[[3],10]],[2]] +[[],[7],[6,[7,[6,4,5]],8]] + +[[],[6,[[9,7,10],9,6,1,[9,7,8]],[[0,2],[]]],[4],[2,10,[2,[1,2],[1,9,10,5,1],[5,0],[5]],8],[3]] +[[2,[[],[4,10,1,3,2]],4]] + +[[[[5,8,3,0],7,6,[],[7,8]]],[],[6,[[10,5,2,2],2,4],[],3,1],[[[2,2],2,6,[7,6,5],[9,2,9,9]],9,[3],6,2]] +[[5,4],[],[2,[[6],3,9,6],0]] + +[[6,8],[[[8],3,[],7],[[8,9,10,4,5],0,1],5,2],[],[[5,[2,5,5,1],[1],9],1,[[8,6,7],[7,4,4,6]],[5,8,4,6,[7,7,6,2,6]]],[10,8]] +[[[],10,[3],7],[[0,[5,10,4,9,4],[0,9,2,8,9],[4,1,4,1,4],5],5,6,4,2],[],[[],6,[[9],3],[5,[10,4,7],8,[6,2,7,7,4]],1]] + +[[6,9,[[0,0,4,9],[2,3,0],[10,0,8,1,2],[],[1,1,2,8,3]],0],[[[1,5,6],[5,2,4,3,3],2,[6,7,0,4]],4],[0,10,9],[[1,[6,8,2,10,8]],[10,9],8,2,4]] +[[],[[],2]] + +[[[1,4,[9]],5,2],[1,0,1,2],[[8,[4,10,3,3,0]],[[],6,[2,10,4,10,1],[3,5,9,7,6],[2,7,5,9,5]],9,[10,[3,1,6,2,9],[2,0,2,8]],[[8,1,10,6],2,5]],[[[0,4,6,6,4]],[],9,[8,4,6],[9,[10],[],[5,3,7,7]]]] +[[[[4,10,6,4],[],4],8,[10,[4,0,4],[]],[[3]]],[6],[[[8,9,8,7],9,[6],3],1,4,[[6,3,10],8,[5,7,4,9],6,4],[[4,2,5],[0,5,9],4,4,[10,2]]],[[],[7],2]] + +[[5],[2,8,9,7,[[7,10],[5]]],[]] +[[7,1],[[10,3,[0,0]],[[2,7,4,1]],[]],[2],[]] + +[[[],[4,8]],[5,[[5,4,6,0]],3,3,[[1,1],[0],0]],[[],[8,[7],0,7],[[4,8],0,6,8,[2]],2,[0,[10,5,7,3,4],4,[5,4,0,7,9],[6,8,5]]],[[[7],[2,3],1],[[10,3,1,6,7]],[],8,1]] +[[[[2],[2],10],[[10,2,0,10],9],[[10,9,4],2],[6],[9,[]]],[[],4,[[4,2,8,4],6,[7]]],[[],[0]],[[[10,6],[8],[3,2]],8],[5]] + +[[2,8,[[0]]]] +[[10,2,[2,2,9,1,[10]],3,[2,[0,0,5],[5,9,4],[],3]]] + +[[[],10,[],1,8],[],[[[],[8,5,5,7,7]],[[],[8,0,0,3],[0]],[[1,6,4],10,[0,5,4,2],9,[6,3,6,10]]],[6,[7,[0,0,7,10],6,[2,0,9,5]],[2,2,[8,2,1,9,7],5,6]],[3,[10,9],[9,[3,8,10,10,3],2],4]] +[[9,[9,8,[],[6,0,5],3],7],[10,5,5],[6,1,3,[8,0,2],2],[[[4,0,6]],[8,0],6,[[]]]] + +[[8],[]] +[[3],[0,7,[[6,0,0,10],9,[],9,2]],[[10,3,7,[6]]]] diff --git a/src/day13.lisp b/src/day13.lisp @@ -0,0 +1,54 @@ +(defpackage #:adventofcode2022/day13 + (:use #:cl #:adventofcode2022 #:binding-arrows)) +(in-package #:adventofcode2022/day13) + +(defun compare-lists (a b) + (declare (optimize (debug 3))) + (cond + ((and (null a) (null b)) + :continue) + ((null a) + t) + ((null b) + nil) + ((and (vectorp a) (not (vectorp b))) + (compare-lists a (vector b))) + ((and (not (vectorp a)) (vectorp b)) + (compare-lists (vector a) b)) + ((and (numberp a) (numberp b)) + (if (= a b) + :continue + (< a b))) + (t (loop for ia from 0 + for ib from 0 + for va = (if (< ia (length a)) (aref a ia) nil) + for vb = (if (< ib (length b)) (aref b ib) nil) + for res = (compare-lists va vb) + when (not (eq res :continue)) + return res + end + when (and (null va) (null vb)) + return :continue + end + finally (return t))))) + +(defun task1 (inputs) + (loop with inputs = (remove-if #'null inputs) + for a = (pop inputs) + for b = (pop inputs) + for i from 1 + while a + when (compare-lists a b) + sum i)) + +(define-day 13 + (:translate-input (lambda (line) + (if (= (length line) 0) + nil + (->> line + (str:replace-all "[" "#(") + (str:replace-all "]" ")") + (str:replace-all "," " ") + (read-from-string))))) + #'task1 + nil) diff --git a/t/day13.lisp b/t/day13.lisp @@ -0,0 +1,49 @@ +(in-package #:adventofcode2022/test) + +(defconstant +testdata-day13+ "[1,1,3,1,1] +[1,1,5,1,1] + +[[1],[2,3,4]] +[[1],4] + +[9] +[[8,7,6]] + +[[4,4],4,4] +[[4,4],4,4,4] + +[7,7,7,7] +[7,7,7] + +[] +[3] + +[[[]]] +[[]] + +[1,[2,[3,[4,[5,6,7]]]],8,9] +[1,[2,[3,[4,[5,6,0]]]],8,9]") + +(def-test day13-compare-lists () + (is-true (adventofcode2022/day13::compare-lists + #(1 1 3 1 1) + #(1 1 5 1 1))) + (is-true (not (adventofcode2022/day13::compare-lists + #(#(#() #(3 2 10))) + #(#(#() 2 #() 1 #(4 1)) #(3 #(#(8 4 0 7 8) 4 2)) + #(#(9 #(2 1 8 2) #(6 0 3 1 1)) 4) #(10 2 2))))) + (is-true (adventofcode2022/day13::compare-lists + #(#() #(#(0 2 #(8) #(10 7) #(2 8 9 6)) 2 9 7) #(#(#())) + #(10 4 0 #(8 #(10 7 0 3) #(6 5) #(4 1 2 4))) + #(10 4 #(7 5 #(10 4) 5) #(#(6 4 0) 7) 7)) + #(#() #(7 #(#(7 6))) + #(8 #(10 #(2 6) #(9 7 0 5 10)) + #(#(8))) + #(#(#() 9 0 #(3 5 8) 9) 5) + #(2 9))))) + +(def-test day13-task1 () + (is-true + (= 13 + (run-task 13 1 + (make-string-input-stream +testdata-day13+)))))