This commit is contained in:
gbrochar 2023-03-26 22:04:06 +02:00
parent 588d07c14c
commit a53e1e238a
8 changed files with 872 additions and 0 deletions

12
aoc_13a/.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
# ---> Rust
# Generated by Cargo
# will have compiled files and executables
/target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk

8
aoc_13a/Cargo.toml Normal file
View File

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

449
aoc_13a/input Normal file
View File

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

23
aoc_13a/input2 Normal file
View File

@ -0,0 +1,23 @@
[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]

210
aoc_13a/src/main.rs Normal file
View File

@ -0,0 +1,210 @@
use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
#[derive(Debug)]
enum Elem {
Number(u8),
List(Vec<Elem>),
}
use crate::Elem::{Number, List};
// I modified my input because the only 2 digits number was 10
// I replaced all 10s with ':' so that I can parse more easely
fn parse_line(line: &str, mut ind: usize) -> (Elem, usize) {
let mut elems: Vec<Elem> = vec![];
let mut len = 0;
while ind < line.len() {
let a = line[ind..ind+1].chars().next().unwrap();
match a {
'[' => { // Creer une List, la push sur le vecteur en cours
println!("Entering sublist from index {} to {}", ind, ind+1);
let (a, b) = parse_line(line, ind+1);
println!("Sublist len was {}, Left sublist, now at index {}", b, ind+b);
ind += b;
len += b;
elems.push(a);
},
']' => {
println!("Returning list with index {}", ind);
return (List(elems), len + 1);
} // Remonter le vecteur en cours de 1,
'0'..=':' => {
println!("Pushing {}", a as u8 - b'0');
elems.push(Number(a as u8 - b'0')); // Creer un nombre, le push sur le vecteur en cours
},
_ => (),
};
ind += 1;
len += 1;
}
unreachable!("parse_line end of function");
//println!("unreachable !!!! UNREACHABLE");
//(List(elems), len)
}
fn compare(lhs: &Elem, rhs: &Elem) -> u8 {
let mut lhs_v = &vec![];
let mut rhs_v = &vec![];
if let List(a) = lhs {
lhs_v = a;
}
if let List(a) = rhs {
rhs_v = a;
}
println!("[ start list");
for i in 0..lhs_v.len() {
if i >= rhs_v.len() {
println!("Right side ran out of items, so inputs are NOT in the right order");
return 2;
}
match (&lhs_v[i], &rhs_v[i]) {
(List(_), List(_)) => {
let c = compare(&lhs_v[i], &rhs_v[i]);
if c != 0 {
return c;
}
},
(List(_), Number(b)) => {
println!("Mixed types; convert right to [{}] and retry comparison", b);
let c = compare(&lhs_v[i], &List(vec![Number(*b)]));
if c != 0 {
return c;
}
},
(Number(a), List(_)) => {
println!("Mixed types; convert left to [{}] and retry comparison", a);
let c = compare(&List(vec![Number(*a)]), &rhs_v[i]);
if c != 0 {
return c;
}
},
(Number(a), Number(b)) => {
println!("Compare {} vs {}", a, b);
if a < b {
println!("Left side is smaller, so input are in the right order");
return 1;
}
if a > b {
println!("Right side is smaller, so input are NOT in the right order");
return 2;
}
}
}
}
if rhs_v.len() > lhs_v.len() {
println!("Left side ran out of items, so inputs are in the right order");
return 1;
}
println!("end list ]");
0
}
fn main() {
let file_path = String::from("input");
println!("In file {}", file_path);
let mut data: Vec<Elem> = vec![];
if let Ok(lines) = read_lines(file_path) {
// Consumes the iterator, returns an (Optional) String
for (i, line) in lines.enumerate() {
if let Ok(ip) = line {
match i % 3 {
0..=1 => data.push(parse_line(&ip, 1).0),
_ => (),
}
}
}
}
let mut ret = 0;
for i in (0..data.len() - 1).filter(|x| x % 2 == 0) {
println!("\n{}", i / 2 + 1);
if compare(&data[i], &data[i+1]) == 1 {
println!("salut {}", i / 2 + 1);
ret += i / 2 + 1;
}
}
//println!("{:#?}", data);
println!("\n{}", ret);
//println!("{:?}", data);
}
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where P: AsRef<Path>, {
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}
#[cfg(test)]
fn compare_all_test_tool(lhs: &Elem, rhs: &Elem) {
assert_eq!(compare(&lhs, &rhs), 1);
assert_eq!(compare(&rhs, &lhs), 2);
assert_eq!(compare(&rhs, &rhs), 0);
assert_eq!(compare(&lhs, &lhs), 0);
}
#[cfg(test)]
fn parse_all_test_tool(lhs: &Elem, rhs: &Elem, lhs_s: &str, rhs_s: &str) {
println!("LHS {:#?}", lhs);
println!("LHS STRING {:#?}", lhs_s);
let lhs_s = parse_line(lhs_s, 1).0;
println!("LHS STRING PARSED {:#?}", lhs_s);
assert_eq!(compare(&lhs, &lhs_s), 0);
println!("LHS PARSING OK");
println!("RHS {:#?}", rhs);
println!("RHS STRING {:#?}", rhs_s);
let rhs_s = parse_line(rhs_s, 1).0;
println!("RHS STRING PARSED {:#?}", rhs_s);
assert_eq!(compare(&rhs, &rhs_s), 0);
println!("RHS PARSING OK");
}
#[cfg(test)]
fn all_test_tool(lhs: &Elem, rhs: &Elem, lhs_s: &str, rhs_s: &str) {
parse_all_test_tool(&lhs, &rhs, lhs_s, rhs_s);
compare_all_test_tool(&lhs, &rhs);
}
#[test]
fn simple_list() {
let lhs_s = "[1,1,2]";
let rhs_s = "[1,3,1]";
let lhs = List(vec![Number(1), Number(1), Number(2)]);
let rhs = List(vec![Number(1), Number(3), Number(1)]);
all_test_tool(&lhs, &rhs, lhs_s, rhs_s);
}
#[test]
fn simple_list_with_conversion() {
let lhs_s = "[1,1,2]";
let rhs_s = "[1,[3],1]";
let lhs = List(vec![Number(1), Number(1), Number(2)]);
let rhs = List(vec![Number(1), List(vec![Number(3)]), Number(1)]);
all_test_tool(&lhs, &rhs, lhs_s, rhs_s);
}
#[test]
fn recursive_empty_list_simple() {
let lhs_s = "[[]]";
let rhs_s = "[[[]]]";
let lhs = List(vec![List(vec![])]);
let rhs = List(vec![List(vec![List(vec![])])]);
all_test_tool(&lhs, &rhs, lhs_s, rhs_s);
}
#[test]
fn recursive_empty_list() {
let lhs_s = "[[[[]]]]";
let rhs_s = "[[[[[]]]]]";
let lhs = List(vec![List(vec![List(vec![List(vec![])])])]);
let rhs = List(vec![List(vec![List(vec![List(vec![List(vec![])])])])]);
all_test_tool(&lhs, &rhs, lhs_s, rhs_s);
}

12
aoc_13b/.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
# ---> Rust
# Generated by Cargo
# will have compiled files and executables
/target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk

8
aoc_13b/Cargo.toml Normal file
View File

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

150
aoc_13b/src/main.rs Normal file
View File

@ -0,0 +1,150 @@
use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
use std::cmp::Ordering;
#[derive(Debug)]
enum Elem {
Number(u8),
List(Vec<Elem>),
}
use crate::Elem::{Number, List};
// I modified my input because the only 2 digits number was 10
// I replaced all 10s with ':' so that I can parse more easely
fn parse_line(line: &str, mut ind: usize) -> (Elem, usize) {
let mut elems: Vec<Elem> = vec![];
let mut len = 0;
while ind < line.len() {
let a = line[ind..ind+1].chars().next().unwrap();
match a {
'[' => { // Creer une List, la push sur le vecteur en cours
println!("Entering sublist from index {} to {}", ind, ind+1);
let (a, b) = parse_line(line, ind+1);
println!("Sublist len was {}, Left sublist, now at index {}", b, ind+b);
ind += b;
len += b;
elems.push(a);
},
']' => {
println!("Returning list with index {}", ind);
return (List(elems), len + 1);
} // Remonter le vecteur en cours de 1,
'0'..=':' => {
println!("Pushing {}", a as u8 - b'0');
elems.push(Number(a as u8 - b'0')); // Creer un nombre, le push sur le vecteur en cours
},
_ => (),
};
ind += 1;
len += 1;
}
unreachable!("parse_line end of function");
//println!("unreachable !!!! UNREACHABLE");
//(List(elems), len)
}
fn compare(lhs: &Elem, rhs: &Elem) -> Ordering {
let mut lhs_v = &vec![];
let mut rhs_v = &vec![];
if let List(a) = lhs {
lhs_v = a;
}
if let List(a) = rhs {
rhs_v = a;
}
println!("[ start list");
for i in 0..lhs_v.len() {
if i >= rhs_v.len() {
println!("Right side ran out of items, so inputs are NOT in the right order");
return Ordering::Greater;
}
match (&lhs_v[i], &rhs_v[i]) {
(List(_), List(_)) => {
let c = compare(&lhs_v[i], &rhs_v[i]);
if c != Ordering::Equal {
return c;
}
},
(List(_), Number(b)) => {
println!("Mixed types; convert right to [{}] and retry comparison", b);
let c = compare(&lhs_v[i], &List(vec![Number(*b)]));
if c != Ordering::Equal {
return c;
}
},
(Number(a), List(_)) => {
println!("Mixed types; convert left to [{}] and retry comparison", a);
let c = compare(&List(vec![Number(*a)]), &rhs_v[i]);
if c != Ordering::Equal {
return c;
}
},
(Number(a), Number(b)) => {
println!("Compare {} vs {}", a, b);
if a < b {
println!("Left side is smaller, so input are in the right order");
return Ordering::Less;
}
if a > b {
println!("Right side is smaller, so input are NOT in the right order");
return Ordering::Greater;
}
}
}
}
if rhs_v.len() > lhs_v.len() {
println!("Left side ran out of items, so inputs are in the right order");
return Ordering::Less;
}
println!("end list ]");
Ordering::Equal
}
fn main() {
let file_path = String::from("../aoc_13a/input");
println!("In file {}", file_path);
let mut data: Vec<Elem> = vec![];
if let Ok(lines) = read_lines(file_path) {
// Consumes the iterator, returns an (Optional) String
for (i, line) in lines.enumerate() {
if let Ok(ip) = line {
match i % 3 {
0..=1 => data.push(parse_line(&ip, 1).0),
_ => (),
}
}
}
}
data.push(List(vec![List(vec![Number(2)])]));
data.push(List(vec![List(vec![Number(6)])]));
data.sort_by(|a, b| compare(a, b));
let mut a = None;
let mut b = None;
for i in 0..data.len() {
if compare(&data[i], &List(vec![List(vec![Number(2)])])) == Ordering::Equal {
a = Some(i + 1);
}
if compare(&data[i], &List(vec![List(vec![Number(6)])])) == Ordering::Equal {
b = Some(i + 1);
}
}
let a = a.unwrap();
let b = b.unwrap();
println!("{} {} {}", a, b, a * b);
//println!("{:?}", data);
}
fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where P: AsRef<Path>, {
let file = File::open(filename)?;
Ok(io::BufReader::new(file).lines())
}