This commit is contained in:
Bizcochito 2022-12-13 17:14:58 +01:00
parent ea2f6ecee5
commit dba886ece0
5 changed files with 618 additions and 1 deletions

4
Cargo.lock generated
View File

@ -59,6 +59,10 @@ dependencies = [
"pathfinding",
]
[[package]]
name = "day13"
version = "0.1.0"
[[package]]
name = "either"
version = "1.8.0"

View File

@ -14,7 +14,7 @@ members = [
"day10",
"day11",
"day12",
# "day13",
"day13",
# "day14",
# "day15",
# "day16",

8
day13/Cargo.toml Normal file
View File

@ -0,0 +1,8 @@
[package]
name = "day13"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

449
day13/input Normal file
View File

@ -0,0 +1,449 @@
[[[7,8],5],[[9,[8,7,8],[],[2,4,10,10],[2,10,8,3,3]],[],[[6,1,10],[],3,6],[3]],[],[4],[3,0,1,10]]
[[[[3,2,1,5],7]],[2,0,7,[4,[4],[10,2,10],[3,0,5,9],1]],[[[]],[[]]],[1,[[0,8,0,3],6,[9,9,5,5,5],6],[[]],8,[[],[0,4,2],[4,2]]],[4]]
[[],[0,[[5,1,10,6],[]],5,[[3,2,6,1],0,3],[6,3,[10,5],[]]]]
[[[[10,2],6,[1,5,8,0],3],[[4,10,8,10,9]],4,1],[[10,6],1,[[8,9,7,5]]]]
[[[2,4,[8,0,7],7,0],[6,[1,5,9,10,8],[5,1,3,6,0]]],[10,2],[10,9]]
[[[],3],[6]]
[[[1,[9,2],[2,2,9,6],2,9],[[8],[8,2],9,[7,2,8]],[10,[3],[9],[3,4],[8]],[[2,4,7,10,10],[0,10,3],[8]]],[8,7,[2]],[[[3,2,2,7,3],5],[],[9],6,[6,[3,10],[1],9]]]
[[],[[],6,10],[8],[],[5]]
[[9],[10],[],[10],[[[2,9,4,7],1],7,[[10,8,8,7,0]],[[9],7,[],[],[8,7,8,7]]]]
[[[5,[4,0,9,3,1],[8,5,7,5],7]],[2]]
[[[4,[9,1,0,6],[4,1,3]],[0],[[4,1],10,[1,5,2,1],1,5],[2,5,[10,4,4,10,4],0],7],[3,[[0,5,9,6,5],[7],8]],[],[4,4],[]]
[[[[7,8,5]],0,5,[0,[7,8,8,5],[],7,10]],[[3,8,[10,6],2],8,[1,[9,8,4,5,9],8,[4,3,8,2],[2,5,7]],10],[[10,9,1,6,0],[1,[6,10,8],[7,3,0,0,6]]],[9,8,[[3,5],[0,7,7,2],7]],[[],1,[1],[1,10],3]]
[[8,[[4],4]],[],[10,5,10]]
[[0,[[8,6,5,4],[0,6]]],[[3],[[0],3]],[[[6,0]],2,10,10],[]]
[[[7],7,4,[9,[2,3,0,7,6]]],[0,[[6,2,7],[10,6],[10,4,8],[7,2],5],[7,6,[5,5,4]],[[10],[1,4,9,6,1]],7]]
[[[5,[10,6,9]],[6,[7,8,5,4,10],4,[9]],9],[[[5,6,6],4,[8,7,6]],5,3,2,[[5,1],0,8,[],[4,3,0,6,7]]],[[[5],10,1]],[[],4]]
[[5,[2],[[4,4,7,7],[5,0],[5,1,0]],8],[[],7,[[4,9,3,0,1]]]]
[[[[7,1,4,1,1],8,4,[4],4],[2,[3,10],9,[10,3,4],[2]],6],[],[[0,9,2,[0,9,8,7,5]]]]
[[4,[[8,3,2,9],7,8],[3,[5,10],[8,4,4,5],[1,10,6,1,9]],[9,4,[],10],[]],[[3,8,[0,0,4],1,6],3,[1,5,6]],[[4,[9],[6,5,10,2]],7],[],[0,2,[],8,3]]
[[10,[[8],[]],[6,[2,7,2,7],[],5]],[[[0,0,0]],[1,[7],0,2],5,3,[[7,6,8,4]]]]
[[[],[1,[10],0,10],[],4],[1],[10]]
[[[1],[7],[],7],[[[3,0,9,7,2],3,2,10,1],[[7,9,5,2],7,3,[2,1,8]],[9,9]],[[[0,8,10,10],5,2,[8,5,2,3,10]]]]
[5,6,6,7,3]
[5,6,6,7]
[[[[7,5,2,9,0],6,[],3,5],10,7],[1,10,[[4,5,10]],4,1],[[[2,3,1,9],2,5],[1,2,1],0,[9,5,[8,9],[4,0]]],[10,10,[],[[3,3]]]]
[[[[4,6],[],4,[],[8,2,8]],4,[3,[2,4],[5],1,[4,2,8,10,9]],[]],[[]],[[[10,9,10],10,[],[1,6,8,6],[5,9,4,1,10]]]]
[[],[2,0],[6]]
[[[5,[6,8,2,5],7,9,10]],[]]
[[[],4,8,[7,[4],[4,2,3,6,7],6],[0,[8,0,7,10,4],[7,3,7,2],1]],[2,4]]
[[[[3]],[[2,8,1,1,3],[],3]],[8,8,6],[[5],4,2,3,4],[],[2,3,[7,[2,2,7,6,3],8,3,[5,2]]]]
[[7,6,5],[9,1]]
[[[3,2,[1,0,9,2,7],4,2],[[4,10,3,4],6,[0,4]],[],[9,[1,0],[]]],[],[5,[4,[4,10,9,6,3],3],[[8,2,8],[10,7,7,1],10,[],5],[9],9],[0,7,3,5,10]]
[[6,[[5,5,6],5,[],[5,0,9,8],[5,5,0]],[]],[5,1,[1,[2,3]]]]
[[[],2,[[]],3],[5,[[],[4],4,10,[5,8,4,7,8]],[],[5,[0,10,5,7],[5,8],[8,2,4,5]]],[10,10,[]],[10,7,[[]],10]]
[[[1,0,[6,3,1,8]]]]
[[[1]],[[2,[2,2,9,1],[7],6,3],[[],0],6,[[2,2],10],[4,5,[1,4]]]]
[[[[]],5,10],[]]
[[[[4,0,9,5,4],[8,7,1,4]],7],[[10,3],7,10,7],[9,[[6,10],[4,5,2,3],0,8,1],3,3,[[7,4,6,6],[2],[3,7,10],[10,10,0]]],[]]
[[[3,[6,8,2,5,2],[],[8,7],[3,1,8]]],[],[[[2,3,7,10,1],3,0,[9,7,7,8],4],[[6],2]]]
[[1,[[6,9,10],[0,2,5,1,8],5,0],4],[],[0,2]]
[[[0,4],[[10,8,6,3],7],3],[],[[],[[2,5,3],[],[6,7,10,7],5,7]],[5,9,[[],[4,3],3,[1,4,3]],3],[10,5,3,5,[9,2,[9,9],10,[3,8,9,8,5]]]]
[[[6,2,[8,2,4,6]],[9,6,[],[]],[2,[9,7,8],[8,8,5,7],[6,7,0,10]],[[0,7]],8],[[[6],[9],1],[[],5]],[[7,0,[4,8],10],5,7,8]]
[[[],2],[[[8,1]],[[2,10],[3,9,3],[10,2,8,10]],6,8]]
[[5,[]],[9,10,6,[[1],[0,10,3]]],[7,5,[]],[[8]]]
[[1,10],[[],[[9,2,2],4,7],9,7],[0,7,5]]
[[],[6,[8]]]
[[6,[6,3,[10,0]]],[[],1,[[5],4],9,1],[6,7,5,[[6]],[8,9]],[]]
[[8,7,5,[9,0,[5,6,0,2,7],4,[9,2,2,9,5]]],[5],[8,9,5,[[4,8,6]],3],[10,[],3,[3,9,[2,8,3,7,4],6]],[5,[4,4],7,9]]
[[6,[5,[4,10,4,4,10],[5,0]]],[[[1,3,6,1,8],10,[4],9,9],3,[[4,10],2,[10,5,2],9,8],8,[4,10,2,6]]]
[[8]]
[[[],[5,4,9,3,10],[[4],3,[8,0,9,10,6],[4,6]]],[1,[6,[8,4],[6,8,10,5],10],[7,4]],[],[[0],3],[[[9,8,2]],7,3]]
[[[[7],[5,1,6,8],1],2,1,[[4,0,9,5,10],[1,6,2],5,3]],[]]
[[9,[[0,2,7,7,10],[6,9,0,10,4],9]]]
[[0],[[6,9,6,10],[[9,3,8,5]],10]]
[[[4,[7,1,10],[0,0,3,8,9]]],[],[[[],[1,7],[1,5],3],[6,[2,6,7,1]],[[10]]]]
[[[]],[]]
[[3,[]]]
[[8],[[[],0,1,3]],[[8]],[8],[2,[5],10,8]]
[[6,2,[5,[0,6,6,4,6]],4],[[[7,8,8,5,5],6,2,3,8],5],[[],[6],3]]
[[10,0,[1,[],1,[1,6,3],[9]],4,[5,[8,4,6,2],9,[0,10]]]]
[[4],[[[3],2,0,3],7]]
[[7]]
[[[],[10]],[[0,0,2],[4],[[0]],8],[[[2]],2,6,[10,[0,6,6],[10,4,1,4,2],[9],[5,7]]]]
[[7,[[],[5,10,7,0]],5,0],[[],9],[[3,[9,7,4,8],[]]],[4,7,[[],4,[6],2,[6,4,9]]]]
[[[],7],[[7,0,[5],10,[]],2]]
[[[[6],[]],[]],[[9,[2],3,3],[[3,2,0]]]]
[[1],[2,[8,9,2,[4,8,3,2,5],0],[0,3],7]]
[[],[2,0,7]]
[[[[4,1,0],[1,1,10,4,7]],[2,[8,5,8],2,[8,7,8]]]]
[[9,[]],[2,1],[[6],[9,[7]],7,9]]
[[[[10],[7],3,3],[[10,8],[],1,2,[]],[1,[0,8,2]],6],[[[],0],8,[[1]],1,6]]
[[3,[],[[],2,[9,2,5,5],7],6],[10,[],[7]],[[[2],[1,1,10],10,5]],[7,[2,[1,5,10,10]],[[8,1,6,1,8],[10,9,7,3],[6,4,1,8,0],[0,5,4]],[3],[]],[]]
[[9,4],[8,6,[],[]]]
[[[8],2,0]]
[[4,10],[[[10,5,7]],[[7,0],0,1,[2,7,9,8,9]],3,3,7],[7,8,[],[]]]
[[[0,[5,2,4],4],6,[[]]],[1],[[9],3,7,7],[[[4],[3,2]]],[[[3,0,1,6,4]]]]
[[8,[],[8,[],[10,4,4,1]]],[[9,10]],[3,9,3,3]]
[[[4],7,[2,0,[8],7,4],[[3,9,6],5]],[],[[2,8,1,[8,7]],8]]
[[],[],[4,0,[0,1]],[4,10],[4,9]]
[[[],2,1],[[9,[3,3,4,7],0],[],[[1],[],[],0,2]],[[0]],[[[6,9,6,3],[6,1,10,1,0],10],4,[[],6,[3,7],8,[10]],[4,9]]]
[[2,[[4,10,5,1,4],[6,1,0,2],[7]]],[5,[],[[2,3,10,1,0],8],4,6],[9,[7,[4]],4,4,[[8,3,9,7,9],[1,7,2],3]],[3],[[[],6,0],5,[[7,6]]]]
[[[[5],9,[3,10,8,10],[6,1]],[4],1,9,0],[[6,7,10,[6,2]],9]]
[[[5,[1,5,1,0],7,[]],5,[[10,6,7,1],[]],7,[[10,2,2],[2,8]]]]
[[[[7,0,3,3,3],8,[1,5],6,9]],[[6,9,3,[3],1]],[],[7,7,5]]
[[],[],[]]
[[3,7,[],[10,0,[7,3]]],[[7],[[3,0,10],[1],7,[]],10],[1,0,[7,[3,10],9,6,[]],[],[[3,7,7,7,1],[10,8],[7,3,8,9,3]]],[[[0,4],9,1,[7,9,2,8],6],9,[[6,2,3],9,[4,4,8,10],[4],[3]]]]
[[3,5],[10,1,[5,7,[5,3,7,10]],[[7,7,2,7,8],2,[10,4,6],5]],[[7,8,3,[5,10,4]],2],[[[4,2,1,10]],[[9,10],[1,7,9],10],[9,10],7],[]]
[[[[10,6,4],0,[3,5]]],[1,[3],6,[[0],9,4]],[6,[7,[4],[2,6],7,[6]],4],[[[10,7,5,7],5,1,5,5],2,[],[4]]]
[[3,[],[[],6],1],[[],[0]]]
[[[8,[0,9,0,5,5],[]]],[8,4,[5,2,5,[9,0,2,7]],8],[[3,10,[2,2,8]],[1,[1,4,7,1],[0,5,3,9],5],[[6,2],[4],[1,7]],[[7,8,7,0],[2,8,3],[],1,9]],[[[]]],[]]
[[5,[[4,5,10,8],10,5,9]],[],[[[4,2,2],9],5]]
[[6,[[3,0,1,10]],[9,[8,6,5,9,9],[5,0,7,10],4]]]
[[[8],[],[[1,2,10],5],[[0],[8,1,6]],[[4,9,6,10,4],4,[2],[4,8,2,8],4]],[[[3],7,[6],0,[5,6]],[[8,9],7,4,6],[6],[[3],9,3],7]]
[[],[2,3,10]]
[[2,[10],[10,[6,9,6,3],6,[0,8,9,6],[7,6]],[[2],[],0,[]],[[10],6,[3,9]]],[[6],3,[],5],[[[],10,3,[],6],[[6,0,7,7],3,[7,1],0,9],4]]
[[],[],[],[9]]
[[],[2,1,4,4],[[[2,8],10,[2,7,2],[5],2]],[],[8,5,[4],[[4,4,0,8],7,1],[7,1]]]
[[[2,4,5,4,7],[1,3,8],[[7,1]],8,8],[2,[9,4,9],[2,10,7,[10,6]],5,7],[7],[],[[6,[],6,[],1],[[6,6],9,[8,10,2],[10,0,5]]]]
[[[6,[4,8,2,8,10]],[[5,10,0],3,[1],7,[8,9,0,1]],[3,10,[],[7,2,1]],9],[0,[],[[],2,5,4,[10,9,4,4,10]],[1,7]],[[3,[],7,9,[2]],7,2,9],[]]
[[[]],[[3,6,[],6],5,[]],[8,[],[],9,[]],[]]
[[7,[[],3],[8,[],[5,9]]],[[9,[2,5],[10,10,0]],[2,10],0,[6],9],[3,[9,8]],[[5,[0,10,4,1,9],9],[],[[8,8,1,4]],[[0,1,10],3,8],[[8],8,[4,1,9,9,8],[4,10]]]]
[[[[6,6,5,9],[0,2,6,10,9],4,3],4],[[[7,1]],6,[]],[[[9,9,2],[3],[3,6,5,1,1]],10,8]]
[[[[6,10,2,9,8],9],[[9,7,6],4,[2,10,5],[]],8,4,[[7,1,8],[0],[5]]]]
[[8,[2,[2],8,[]]],[[3,[10,0,8,3,9]]],[[4],[],[[7,6,8,10],3,[7,6],[0,8]]]]
[[8,[9,7],[[2,4],7,5,[]]],[[[0,3,8],2,[8]],8,6],[],[0,3,8,[10,[9,9,10],0],5],[2,7,6,[],3]]
[[],[4,8]]
[[3,[7],[0],7]]
[[5,2]]
[[[[1,8,8],[3,8],[1],4,9],[1,[4,10]],[]],[8,7,8,6],[],[[5,4,[6,10,8,1],2],[6],0],[0,[10],9,[0,10,[5]],[]]]
[[[6],5],[4,[],8],[3,10],[[[0,7],4,7,[7],[]],5,2],[]]
[[[5,0]],[0,10,[5,1,4,[3,0,10,7,7],2]]]
[[[9,[6,8,4],7,10,4],10,4,0],[5,[8,10],9]]
[[[]],[[[8],4,[8,9,10,3,4],[5,0,6,2,6],[10,0,0,10]],10,[[3,5,6]],[0,[0,10,9],[5]]],[6,[6,[6,9,6,2]],[[7]]]]
[[9],[[[],[5],8,[],1],[],[6,7,2],9],[5,9],[8,[[7,4]],1],[3,[4,[10,4,1,10],[2,0,4,5,4]],[[8,0,10,7,1],[],9,8],[]]]
[[7],[[[3,8,1,1],[6,2,10],[5],[5]],10],[5,2,[3,[8,2,1,5],8,[10],[2,2,2,8]],[]],[[7,6,9,[0,6],3],[[1],[0,0,4,7,6]],8,[[8,5,1,4],[10,0,0],5],7]]
[[],[[[0,8,2,5],[8,4,6,7],0],9,3,[],6],[],[1,[0,[3,10,4,6,2],6,8,0],8,[[],[0,0,6,9],[0,1]],[[6,2],[5,10,1],3]],[[[3]],5,8]]
[[],[[6,4,6,[0],[6,9,3]],[[],1],[[1,9],8,[],7],[3,2,3,[]],[7,[]]]]
[[9,1,3,[[3,0,9,4],[0,0,2,0,2],0,[2,10,0,4,7],[0]],[[10,8],[8,8],2,1]],[[[8,5],[]],[7,8,[7,6],[6,9]],2],[[2],[],6],[],[]]
[[],[[[],[9,8,8],[]],[],1,[[3,0],7,3,4],1]]
[[8,8,1],[[6],8,[]]]
[[[6,[7,7]]],[]]
[[3,[5,[4,0,1],[10,5,0,8],[10,5]],0,9]]
[[1,[7,[5,7],[0,9]],[[10,3,2,3],[2,10,8],9],[[9,1,7,1],0,2,10,[]],7],[]]
[[3,[6,8,8,[10,5],9],[[],2,0,[8,0]],[[9,7],7,[],10,10]],[1,9,4,8]]
[[[2,[6,1],4,[7,3,8,2,10]],[3],9,[2,[]]]]
[[4],[[[1,6],[9,4,5],[8,3],3]],[],[[9,2,[3],[2,1]]]]
[[[[],0,[3,7]],0,[]],[],[[[3,0],6],[3,[7,9,3,4],5,3,[6,7,10,6]],2]]
[[[],9]]
[[[[7,9,5,9,8]],[],9],[1,2,[],0],[1,4,9],[5,10],[7,0]]
[[[5,[2,7,5,0]],6],[5],[],[[3],[4],3,0],[[[],7],[9,9]]]
[[],[[[9,7,8]],[[4,7,9],[7,0,4],3,6],3,[[2,10,2],[10,0,10,6,9],1],8],[4],[2,9,3,3]]
[[5,[2,0,7],7],[9,1,10,7,2],[[[1,2,5,4],5,6,[1]],8,0,2],[10]]
[[[[1,1,10,1,8],0,7],2,7],[2,5,8,[[1,9,0,7,9],7,0,2,[8,1,0]],[[],[]]]]
[[10,2,3,0,[]],[[8,7,0,3],3],[],[[],1,6,4],[4,[],9,[7,3,5,[0,5,1,0],0],[[9],[1,1,8],6,8,7]]]
[[7,6],[[8,[4,6],10],[0]],[]]
[[8,9,8],[0,8,9,0,[6,6]]]
[[[[8,2,7]]],[9,[4,2],[5,1,9,[1,9,2,9,2],[8,3,1,5]]]]
[[10,[[6,2,8,2,9]],10,[[5,10,1],4,[6,3,9,8,6]],[8,7,[7,10,9,6],[4,7,3]]],[[3,5,6],[[0,1,8,0,0],[8,2,1],[1,10,8],7],[3,[0],6]],[],[[],[[10,1,0],2,[3,10,3],7],1]]
[[[7,6],1,[[0,5,0],4],[[]],1]]
[[[0,5],[7],1,2]]
[[[[0,5]],[[7],0]],[]]
[[[0,4],7,[5,7,5,0]],[],[],[0,[4,[2],6],0,[],[]],[10,7,[[5,5,7],[0],6,[1,9,2,7,4]],[[3,3,7,1,9]]]]
[[[3,8,3,[5,3,6,5,0],7],[0,6,2,[4,9,0,1],10],5,3,3]]
[[[[7,7,2,3],6,6],[[2],[],[9,7],10,7],[1,8,[2,5],5,[2,3,7]],1],[]]
[[[[8,1,2],3,[8,5,0,6,3],[8]],10],[[[8,2,10,4],[3,10],[0,2,2,9],[0,1,9,1,2],5],7,[],[]],[7,6,[4,2],9,[0]]]
[[[10,[6,3,5,8],6,8],[]],[[[1,8,1,7,10],9,[0,1,3],[0,7,7,6],[0,4]],[]],[3,8,9,[7]],[[[2,2,6,1,10],2,[10,2,2],1,[9]],2,4,7]]
[[[[6,1,4,1],8,6,10,[5,3,9,10]],[[],4,0],9],[4,1,7,6],[[5,[3,8,1,4,6],1,[]],7]]
[[],[7,[],[1,[6,10,5,3],[1],7,[9,0,5,0,5]],[7,5,4,3],[[4,7,6],[],4,[8,9,2,9,3]]],[[0,[],[8,4,8],1],4,0,[6,[8,10,1,8,2],3,6]],[]]
[[1,0]]
[[[5,9,[8,10,0,1,0]]]]
[[[[9],2,1],4],[7,9,8,[[6,10],[10,5,8],[2,4,7],1],[5,[9,9,7,1,1]]],[[4,0],[[6,6],[5],4]]]
[[[],6,10,9],[4,2,3,[[1,4,4],8,[],[6,8,8,9,0],[5,0,5]]],[[],1,0,8,[8,5,3,[],[8,1,10,8]]]]
[[2,[3]],[0]]
[[[[8,5,6,10,8]]],[4]]
[[10,2,[],[]],[[7,[2,7,10]]]]
[[[[],[5]],2,[[9,6,9,10,7],8,8,[8,3,7,8]],[[],2],10]]
[[[[0,6],[8,7],[],9],3],[],[6]]
[[],[],[0,[]],[[]],[1,10]]
[[[[9,7,2,4]],9,[2,1]],[]]
[[[5],3,8,[[7,9,3,5,5],[2,8,7,4],[0,6,10]]],[[3,[0,8]],6,0,[10]]]
[[8,[[],8],6,3,2],[3,8,[1,5,9]],[[3],[4],[[2,5,10,4],4,[3,8],[4,1]]],[0,[[9,6],[5,9,7,0],[3,5,10,7,6]],8]]
[[[9,[],7,[3,0],10],5],[5,4,5,5,7]]
[[[3,8,[9,4,4],[2,3,6,2]],4],[[],8,[[1,6,1,4]]],[[[4,9,10,2,10]],6,[5],[2,[7,9,3,4,9],[7,4,7],4],9],[[],5,[9]],[[],1,0]]
[[[[6],[9,2,6],[1,6,6],[10,4,9,3,3]],[10,10,[10],[8,0,7],[7,5,8,4]],[[5,7],2]],[6,[],2]]
[[4,4,3,7,[9,0,[]]]]
[[6,[[2,10,2],[5,4,1,1,9]],[[6,2,5,2,10],[4],[6,9],3,[5]],5],[[0,7,2],3,1,6],[]]
[[[1]],[[[],[]],3],[[10,6],[7,8],[9,7],1]]
[[3],[[5,7,[1,4,10]]]]
[[],[10],[0,[],[],[[0,8]]],[2,3,10]]
[[10,2],[1],[6,8,[[2],5,6,1],[4,[8,9,6,3],5]]]
[[[9,[6,2],4]],[[[7,4,4,5,5],1,6,3,9]],[0]]
[[3,[1,8,7,[]]]]
[[[2,4,[4,8,8,6],[10,1,5,7,5],1],6,3,[[9,10],[6,7,2,10]]],[[4,[3],3],0],[[],3],[3,3,6]]
[[0,1],[[8,[]],0,[],7,5]]
[[8,2,[5,0,0,0],1],[5]]
[[[[8,9],[3],0,[10]],[[6,10],0,[10,7,0,8]],1,1],[[[],[5],[3,5,8,7,4],[]],[[0,6,1],[10,9],7]],[8,[[3],[9,3,9,4,5],1,0,3],9],[[[2],[3,6,7,3,9],[9,0,2],[4]],4,0]]
[[0,[[4,0,3,0,10],[],0,9],[1,8,6,6,2],[[6,4],[],[0,3],[7,5]],[1]],[[7],[1],[9],10],[[],[[8,9],[4],3,[4]],[[2,4],[8,8],[3,3,3,3],[7,1,5],8]],[2,[5,[3,3],6,[3,3,9,1]]]]
[[[[1,3,5,7,1]],[],[4,7,[1,5,1],[3,10,3,3]],[],[2,9,[9,8],3]],[[[3],9,3,5,6],7,[[]],8],[8,5],[[6,7,10],2]]
[[[2,[9,6,3]],5,[6]],[6,6,2,[0,8,[0,0,1],0,0],[]],[6,3,2],[],[[[0,9,10,4],[],5,[4,8],[2,7,6,4,10]],[[0,6,3,4]],[3,[4,7,9,2,8],7]]]
[[7,3,[[8,6,7,5]],0],[10,[8,[3,3,8,1],0,[9],[2,4]],[[],[6,2,0,7],[9]],6,[[9],4]]]
[[[[8,10,8,6,10],8,6,[5,0,9]]],[[8,[2,3],9],5,6,3],[4,[]],[[[5,9,5],5,[],[4]],[6,[8,2,3],[5,6,5,5,7]]]]
[[8,[],6,[[7],[10,5,8,8],9,[]],[]]]
[[[[9,5],3]],[[7],[4],9,[],5],[3,3],[4,[[1],0,3],4,[[1,9,5,2]],[[0,6,9],[]]]]
[[[6,10,3,[],[9,1,8]],0,5,[],[[3,7,10,4,1],9,[0,0,8]]]]
[[[[8]],3,[1,7,5]],[[[3,1,2,8],[4,5],[1,0,4,2,9],1,[]],8,5,[5,[],[9,4,7,3,9],[0,10,10,6,0],[7,5,5,3]],6]]
[[0,[],7,4]]
[[7,[10,5],[[7],[3,5,3,10],[0,3,1],9],4]]
[[],[[[3],1,[2,10],2],4,9,5]]
[[[[10,1,4],1,[6,10,2,8,3],6],3],[[3,3]],[[[6,6],[8,7,1],10,5],1,7,[],10],[[],[0],7]]
[[],[3,4,[[3,5]]],[[[4],[1,7]],9,[2,0,8,9],1]]
[[10,6,[5,[5,9,7],4]],[],[],[8,[[4],[1,6,10,5,8],3],1,[[1,1]],9]]
[[[10,[2,10,10,8]],[[2,8,10,2,6],8],[4,0,8,[7,5]],10]]
[[[[0,5,5,10],[6,5]]],[[[3],[5,6,4,2,8],7,10],2,10],[],[[[5,9,1]],[],4]]
[[1,[[],[3,2,10,2,4]]],[6],[4,6,0,[5,[1,2],[10,4,3,8],7],[[2,4,4,5],[5],[8,3,10,7,3]]],[3,4]]
[[[[8,0],[5,3,9,10],4]],[8,1,9,6],[6,2],[0,6,2,5,[[7,8,4],[10],[9,6,1],6]],[]]
[[],[3,[10]],[],[4,[[],[5,2],[],3],6]]
[[],[],[[[3,8,9],1]],[[7,[4,5],[7,8,8,8],4],[9]],[]]
[[7,0,[[10,7],0],1,[10,6,[5,5,8],9]],[[7,[9,4]],[],5,2,[[6,1,8,9,0],[0,2,6],[3,10,3,0],[2,6,1,2,10],4]],[4,2,[4,7,4,[]]],[6,[[10,4,1],2,0,[10,8,7,1,0]],4,[[2,5,5,6]]]]
[[[[4,1,4],[6,8,1],8,2,[0,3,4]],[9],[[1,10],[7],7,[0],2],6],[10,2,0],[6,[2,0]]]
[[10],[4,9,[6,4,[8,1,10,4],[10,9,8],6]],[],[[[8,1]],3]]
[[],[10,6,[[4,1,5],[3,2,6],2,[8,1],[]],1],[3,5,9,[],6],[9,[[2,2,1],[3,4],[],8,[]],[]]]
[[1,[]],[],[[10,[]],[3,[4,10],4],5,[[5,6,3,9,4],[]],7],[5],[[10],[[8,10,6],2,[4,8,10,9],2,10],7,[8,[4,10,10,7,10],10],4]]
[[7,[3,4,6,[4,3,4,7,3]]],[]]
[[],[[7],1,2,8,2],[],[0,[],1]]
[[8,7],[4,[],4,[0,[9,6,7,4],5],[4,7,[9,10,9]]]]
[[],[8,5,9],[1],[],[[[3,1],[6,9,10,10],[6,3,9,5,2]],5]]
[[6,0,6],[9,[2,2,8,[5,2,1,2,8],8],6,[],[3,0,[6,10,3,6,7],[]]],[7],[9,1,[6,7,[],[0,7,0,7],[7,3,10,7,4]],[]]]
[[6],[2,[[]],10,9],[6,[[],[8,9,7],[8,4]],7]]
[[7,0,[10,[9,1,6,10,8],[2,8],[4,4,5],0],[[4,1,3,10],3,[3,5],[3,6,10,9]],[2,5,7,10,[6]]],[[],10,[[],3]]]
[[10,[[10,7]],[],9],[5,[[3,9,6],[10,2,3,8,5],6,3,[2,4]],[[6,8,8],4,9]],[],[],[8,[[3,2,6,3],[],4],1,[[0],[7]]]]
[[[10,[1,5],[1,4,3,0,8],2,[9]],[],3],[[[8,0,5],[],2],[2],5,[1,6,[8,8,7],5]],[10,7,9],[]]
[[[[1],[8,0,0,8,1],[1],[8,4]],[2,[],[2],4,[1,8,9]],9],[],[[4,8,[8,0],[10,0,10,0,0]],1,2,1],[[6],5,6,9,6],[[[5],[7,4,9],2,[6]],9,[[10],6]]]
[[0]]
[[3,[]],[[],[5,1]],[4,4],[[[9,5,10,9,3],6,[1,8],10],9],[3]]
[[],[[[1,0,9],[1,4,1,0],[1,3],5,[9,10,5,1,0]],9,[[7,8,9],[6,5,0,8,6],10,[9,8,8],10],[8,4,[]],[]]]
[[]]
[[6,[[5,6,6,6,6],4,[1],5,[9,2,4]],1,[2,9,[10,6,9,0],6,7]],[[8,7],9,2],[]]
[[[0,2,9],[0],7],[6,2,[[7,2,4,8,0]],[5,10,[6,1,8]],[]],[[[3,8]],0,9],[[[1,8,9,7],10],[[6,9,2]],[[],3],6,[[8,9,9]]]]
[[],[10,[[9,8,6]],5],[[1,1,[10,4,6,7],[1,4,1,0,0],[7,8]],[[2,0,10,3,1],[],[1],[]],[10,[9,7,9,8,8],8],10],[],[[]]]
[[[3],[7,10]],[0]]
[[0],[10,5],[9,[[],[7,2,7,9]],[[10],[9,9,8,10],[6],10,6],[[]]]]
[[[4,[4]]],[],[9,2,[[8,10,0,3]],[1,[10],[1,8]]]]
[[[[1,7,4,3,2],4,8,[2,2,6],4],6,6],[3,3,3,1,5],[[1]],[10,[]],[2]]
[[[],3],[[],7],[8,0,8],[8,2]]
[[4,9,1]]
[[[[8],7,[]],[3,1,0],5],[[7,7,1,[10,9,6,4],0]]]
[[[],1,7]]
[[3],[5,6],[[[4],5,[],[10,5,3,7],1],[5,[],8,[7,8,9]],8],[5],[[],[9,7],[[5,8,5,4],9,5],[[2],5,[],4]]]
[[[[],[]],7,[[4,4,10,6],[5,4,3,4],0,9,[1,8,3,2,1]]],[4,[[7,6,1],[5,2,6,10]]],[[[8,6,8,5],5,[0,2,8,9]],7,[[1,8,8],[]]],[9,0,[4,10,0],8,[]]]
[[[2,[3,7],3,[4,1,10],[8]],1],[[[10,3,9],[10],[6,2,4],[0,4,6]],[10,[10,2,1,4]],6],[[4],[],7,[3]],[[7,0,[0,8,10],[6,7,0]]]]
[[[[4,7,8,3],[9,4,5]],6,[],7,[[0,3,4,0],[]]],[7,[3,[3,5,3],5,8,5]]]
[[6,8,[9,[],4],10],[],[[8,[7,6],6]],[6,7,[7,6,6,5,1],3]]
[[],[[6,[6,3,0,9,10],2,7,0]],[[[6,4,0,0,7],1,0],8]]
[[],[0,5,[5,9,10,[6,0,1,0,5]],[[6,5,6,5]],[[0,1]]],[[[],8,[]],[[2,2],2,[1,4,6,9],[],10],5,6,[[3,0],4,7,[3,6,9]]],[[9]]]
[[[[],6,[2],4]],[[10,[5,6]],9,[[0]]],[]]
[[3],[7,8,[[],7],4,1]]
[[[],2]]
[[[9,4,[5,3,5]],6,4],[[[3,9,4,3,3],[2,9,0,2]],10],[[4,0,7,[7,4,9,4,3]],[[1,2],2,[],[],4],3],[[]]]
[[[9,[2,9,1,6,2]],[5,0,[6],[2,7,10,10,9]],[2,10],[[5,3,10],6,[5,9,5],[]]],[1,[[0],[],[1],[9,9,4],[1,6,7,0]]]]
[[3,6,[4,7],7],[[2,[7,9,3],[5,5,9,8,5],4,[10,3,3]],4],[[3,4],[],7]]
[[0,1],[[[6,6,3,5],[4],[4,10],[2,10,3,3]],7,[9,[8,7,6,8],0],[]],[],[[[6],[4,6,10,6,5],[0,4,9,10,4]],[],[[7,9,5,10,8],8,[10,6,7,5]]]]
[[[],0,[],6,2],[[3,0,3,[10,1,2,8,8],0],10,3,[4]]]
[[4,4,[[9],[0,9,6,3]],[[6],7,9,[4,6,2,3]],[]],[[[7,2,4],[8,4,9,8,5],[0,10],[6,1,6]],5,[3],[[0,1,8,6,1],2,[],0]],[[2,[5,1,0,4,8]],[4,8,[10,5,8,5,0],6],10],[8]]
[[[[4,2],[],[5,7],9],2,[[9],[0,0,9,4],[9,8,8,0],3]],[]]
[[0],[0],[[],[10,2,6,[],1],0,[[1],[6,9,6,7],[],0,2],[6,[6,10,5,5],[8,5,7,4]]],[],[]]
[[8,[[2,6,8,4],1]],[[],[],[[8,3,0,8],6],[3,[1,3],8]],[1,10,[2,2,[0,5,2,9],[4,10,4,8]]],[[8,9,6],[[],[4]]]]
[[],[[7,[4,1,1,8]],[[1,7,6,0,1],[10,9,0,10,4],0,[],[4,8,10,0,3]],1,0]]
[[[0,[3]],[7,9,6,0,8]],[5],[[],4,2,[[],10]],[[],1,0]]
[[4,2,[[4,3],2,[4,5,5,1,1]]],[[8,[7],[9,7],4,[0,3,8,6]],0],[5],[2,2,[10,10,[3,6,10,2,5],[],0]]]
[[[[6,3,2,2,6],1,[0,2,5,9,4],[6],[2]],9,[7,3]],[[[7],7,4,2,2],5,6,[3],3]]
[[[[5,3,2],[4,9,8,4,5],[3,2,1,0]]],[[[10,5,7,1,8]]],[9,5,[[4,2,8],[0,6]],10,6],[[],6,7,[4,5,4],3],[[[5],[8,0,5,9],[10],[10,9]],[[],[7,8],[10,0]],1,[2]]]
[[[[5,3,10,2],[9,5,4,1,4],5,3],8,[8,8,[0],3,[]],2,[]],[2,2,[[],0],[7,5,0],7],[[[4],[1,8,6,9],[2,9,7,4],[5]],[4,1,[2,9,1,6,4],[7,8,2]],[10,5,0]],[]]
[[[7,5,4],[3,1,[8,9,3,3,8],0]],[8],[2,[9,[4],3,6,[]],8,10,0],[10,2,[[0,10,10,0,3],[8,5,4,2,0],6],1,5],[[[0,0,6,10,7],[1,8]],9,[2,9],2,10]]
[[1],[[],2,[5],[[8,10],[6,0,8,5,10]],4],[5],[],[[],7]]
[[[3,9],[9,[3,0,5,2]],[[2,9],[],9,5,[1,7]],[0,[7,4,2,3],7,[]],0],[6],[],[[1,1],[[7],9,[]],10,[0],0],[[9,[],[2,9],[5],5],8]]
[[[[0,6,7,5,2],[],3,[2,8,10,2],[3]],10,[[4,8,4,8,10]],[[10,3,3],[4,4],6]],[[6,5,7,[3,3],[]],0,[],[8],[[9,1],8,[9,6,4,9]]],[],[10,0,0,[[3,3,1,5],1,6,[],[9,2,0,4,5]],[[4,8,4,0]]]]
[[6,1,[[5,4,4],8],[5,7,[],6,[4,7,10,7,10]]]]
[[8,1,5,[[0,8]]],[0,[2,[1,2,5,4,8],[],3],[[]],[],5],[9]]
[[[[0,6,2]],2,[[7],7,7,10,[6,5]],[[1,10,0,3]]],[3,3,10,5,[6,[6,4],6,7]],[[[4],8,8,[5]]]]
[[0,[[2,3],[10,7,3,10,5],[4,4,2,1,0],[9,5,2,7]],[[9],[1,6],[3,5,8,4],[3,7,1,6,9]]],[2,[4,[]],[[9,10,6],7,10,[10,0,10,0]],[[7,7,5],9,6,4],[[7,6,0,5,0],8]],[]]
[[],[[8,0,7,[5,9],[0,3]],[],10],[[4,2,[]],10,1],[]]
[[5,[9,9]],[8,[[0,4,2],7,[7,6,7],9],[[0],[],[10,2],[],8],0,0]]
[0,10,10,8]
[0,10,10,8,2]
[[7],[[],[9,9,[2,0],[1,7,0,5]],9,[6],9]]
[[7,4,3,10],[[8,[1,0,6]],[8,0,[],[0,4,7,6],[]]],[[[10,7,9],[7,1,1],[6,10,8,0,0]],10,[5,9,0],[[2,9,1,4]],[[3,2,10],[10,5]]]]
[[10,7],[6,4,[[4],[8,8,4,2],[],[3,8],1]],[[3,[]],4,6],[[4,3,3,0]],[4,4,0]]
[[],[[4],2,1],[],[[],9],[7,3,10,9,8]]
[]
[[8,[3,7],6,0],[[[5,3]]],[6,[1,2,[10,2,7,3,7]],[[4],[0,8],[4],[8,3,6,6],[8,0,7,9]],[]],[9]]
[[[8],7,[]],[5,[],8,[[4,3,4],0,0,5],[[2]]],[1,4]]
[[2,8,9,7,[[8,9,8],[4,10],[8,7,10,2],[10,3,5],[9,4]]],[[6,5,[4,1,10,0,1]],3,8],[10,2,5,1]]
[[[[6,6,0],[0,10,5]]],[[[],[]],[],[],[10,[3,0,10],[0,8,1,3,10]],9],[4,[],8,[[1]],1],[[[6]]]]
[[[7,[9,5,4,10,3]],0,[[8,0,7,1,0],4,5,[9,9,3,10,0],1]],[9]]
[[[7,[7,3,0]]],[[],3],[],[[[5,7,5,9,1],[10,7],7,5,6],10],[]]
[[[3],0],[4,8,[[0],[],3,[0,8,5,5]]]]
[[[[6,6]],[4,[]],[[],8],6],[],[8]]
[[[[8,8,5,0],[0]],[4,5,[8,1],4,[0,6,5,5]]],[],[[9],[7,3],8,9,6],[]]
[[[[1,6,3,6],[1,4,7,5,5]],2,[6,3,7],6],[4],[9,0,6,[[5,7,5],0,2,[7,1,2,0,2]],5]]
[[[[9,6],[2],[6,3,4,0,8],2],[],4,[[7,9,2,9,3]]],[[[10,5],[5,3,0],0],8,[[1,6],[0,10,2],6]],[],[3],[2,7,10,10,8]]
[[10,[[],[1],0],[]]]
[[[6,8,[5,4,8,5,4],1,2],9,7,[],[8,7,[],3,[8,7]]],[],[],[9,1],[[10]]]
[[[[9,10,9],9,[7,4,6,0]],3],[[0,[2,6],[7,4,6,5],10,9],1,1,9,4],[5,0,[[],[2,5,3,9,2],8,[5,3,3,5],[10,4,10]]]]
[[],[]]
[[0,10],[1,[4,[],2]],[9,3,3,0,[4,[],[],3]],[[5,[6,2,9,7,6],9,[]],8,8],[1,7,1,0,4]]
[[[],[10,2],5],[],[[0,6,[0,6]],0,1],[3,1,10,5]]
[[9,[2,7],[[1,8,9]],[[5,5,8,7],[]]]]
[[10,[6,[],9]],[[7],[2,2,[7,3]],[[5,6,5]],5,[1]],[3,4,[]]]
[[1,4,6,[]]]
[[1,3],[2],[6,6,0,[5,[],9]],[[2,[1,4,5],[6],[5,10,9,4]],[7,4,6,[2,6,8,9],[5,6]],[[8],[]],[[9,5,6],[]],8],[[0,[2,9,6,3],[5,3]]]]
[[],[[[],7,[0],[1,7,2],[9,9]],[[1,3,8,6,1],8,[4,5],[7],0],[[9,0,9,5,4]],4]]
[[[8,[0,6,5,0],[9,2,1,8,5],0,2],2,[[9,9,3,0],9,2],[[6],4],[[8],2]],[8,2,[9,[6,4,3,1]],7],[3,[[],1,1],[[1],[],[4]],8,2],[1,10,[[5,7,10],10,[6,0,10,0,9]],8],[]]
[[[[4,7,10],[]],[2,6,6,[2],[9,6]],[],1],[9,5,10,5,3],[[],5,3,1,[[9,7,10,10],[4,6,5,7],6,[10,1,6,7],[4,5,3]]]]
[[[6,[9],1],[3,[4],0]],[]]
[[[4],5],[2,9,9,8,[7,[4],6,[10],[10,7,8,8]]],[9,2],[[3,[10,10,3,6],5,9,[8,1,1,3]]],[6,[5,[7,3]],9,3]]
[[[3,[3,2,10]]],[1,[[2,10,8,10,1],0,7]],[[8,[]],2,[6,2,[10,4,6,0,0],4],4,4]]
[[5,[[],[10,1,10,6],5],[[0,9],[7,1,2,2],[1,6,1]],9]]
[[1,[7,1,[2,4,0],[4,4,8,6,6]]],[],[[6,[7,3,0],[1],[8,8,0,9],2],[[8,10,8,3],9,[6,5],[3,0,9,3,6]],[[],[],[],[1],0]],[9,9,10,7],[6]]
[[],[[],0,2],[9,[]],[3,[[8,4,9,1,9]],[10,3,7],1,[5,[10,0,4],[8,8,4,10,8],[6,1,3]]]]
[[0,[]]]

156
day13/src/main.rs Normal file
View File

@ -0,0 +1,156 @@
use std::fs;
use std::str::FromStr;
fn main() {
const FILE_PATH: &str = "input";
println!("Hi this is the twELFth day of AOC2022, first we will read the file {}", FILE_PATH);
let contents = fs::read_to_string(FILE_PATH)
.expect("Should have been able to read the file");
let mut mes = parse(&contents);
println!("The sum of indexes of ordered packets is: {}", mes.chunks(2).map(|l| l[0] < l[1]).enumerate().filter(|(_, b)| *b).map(|(i,_)| i+1).sum::<usize>());
mes.push(parse_line("[[2]]"));
mes.push(parse_line("[[6]]"));
mes.sort();
println!("The distress decoder key is: {}", mes.iter().enumerate().filter(|(_ ,i)| **i == parse_line("[[2]]") || **i == parse_line("[[6]]")).map(|(n,_)| n+1).fold(1, |x,y| x*y));
}
#[derive(Debug, PartialEq, Eq, Clone)]
enum Item{
Num(i32),
List(Vec<Item>)
}
use std::cmp::Ordering;
impl PartialOrd for Item{
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
match self {
Item::Num(s) => {
match other {
Item::Num(o) => {
s.partial_cmp(o)
},
Item::List(_) => {
(Item::List(vec![self.clone()])).partial_cmp(other)
},
}
},
Item::List(s) => {
match other {
Item::List(o) => {
s.partial_cmp(o)
},
Item::Num(_) => {
self.partial_cmp(&Item::List(vec![other.clone()]))
},
}
},
}
}
}
impl Ord for Item {
fn cmp(&self, other: &Self) -> Ordering {
match self {
Item::Num(s) => {
match other {
Item::Num(o) => {
s.cmp(o)
},
Item::List(_) => {
(Item::List(vec![self.clone()])).cmp(other)
},
}
},
Item::List(s) => {
match other {
Item::List(o) => {
s.cmp(o)
},
Item::Num(_) => {
self.cmp(&Item::List(vec![other.clone()]))
},
}
},
}
}
}
fn parse_line(s: &str) -> Vec<Item>{
let mut out = Vec::new();
let mut s: Vec<_> = s[1..s.len()-1].chars().collect();
let mut construct = String::new();
let mut inside = 0;
while s.len() > 0 {
let c = s[0];
if c == '['{
inside +=1;
construct.push(s.remove(0));
} else if c == ']' {
inside -=1;
construct.push(s.remove(0));
if inside == 0 {
out.push(Item::List(parse_line(&construct)));
construct = String::new();
}
} else if c == ','{
if construct.len() > 0 && inside == 0 {
out.push(Item::Num(i32::from_str(&construct).expect("NaN")));
construct = String::new();
}
if inside > 0 {
construct.push(c);
}
s.remove(0);
} else {
construct.push(s.remove(0));
}
}
if construct.len() > 0 {
out.push(Item::Num(i32::from_str(&construct).expect("NaN")));
}
out
}
fn parse(s: &str) -> Vec<Vec<Item>>{
s.lines().filter(|l| *l !="").map(parse_line).collect()
}
#[cfg(test)]
mod test {
const INPUT: &str = r#"[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]"#;
use super::*;
#[test]
fn lists1() {
assert_eq!(parse(INPUT).chunks(2).map(|l| l[0] < l[1]).enumerate().filter(|(_, b)| *b).map(|(i,_)| i+1).sum::<usize>(), 13);
}
#[test]
fn lists2() {
let mut mes = parse(INPUT);
mes.push(parse_line("[[2]]"));
mes.push(parse_line("[[6]]"));
mes.sort();
assert_eq!(mes.iter().enumerate().filter(|(_ ,i)| **i == parse_line("[[2]]") || **i == parse_line("[[6]]")).map(|(n,_)| n+1).fold(1, |x,y| x*y), 140);
}
}