This commit is contained in:
zv0n 2022-12-17 14:21:09 +01:00
parent 9a511b05b6
commit 30af58efcf
3 changed files with 654 additions and 0 deletions

16
2022/13/Makefile Normal file
View File

@ -0,0 +1,16 @@
CXX ?= c++
CXXFLAGS ?= -std=c++11 -Wall -Wextra -pedantic -O2
PROJECT = lisp
all: ${PROJECT}
${PROJECT}: main.cpp
${CXX} ${CXXFLAGS} -o $@ $^
test: ${PROJECT}
./${PROJECT}
clean:
${RM} *.o ${PROJECT}
.PHONY: all clean test

449
2022/13/input Normal file
View File

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

189
2022/13/main.cpp Normal file
View File

@ -0,0 +1,189 @@
#include <fstream>
#include <iostream>
#include <memory>
#include <sstream>
#include <vector>
enum Result {
RIGHT,
WRONG,
INCONCLUSIVE,
};
class Packet {
public:
Packet(bool is_number): _is_number(is_number) {}
void setNumber(int64_t number) {
_number = number;
}
void addValue(const std::shared_ptr<Packet> &value) {
_values.push_back(value);
}
bool isNumber() const {
return _is_number;
}
int64_t getNumber() const {
if(!_is_number) {
return -1;
}
return _number;
}
Result shouldBeFirst(const std::shared_ptr<Packet> &second) const {
auto max_size = _values.size() < second->_values.size() ? _values.size() : second->_values.size();
for(size_t i = 0; i < max_size; i++) {
if(_values[i]->isNumber() && second->_values[i]->isNumber()) {
if(_values[i]->getNumber() > second->_values[i]->getNumber()) {
return WRONG;
} else if(_values[i]->getNumber() < second->_values[i]->getNumber()) {
return RIGHT;
}
} else if(!_values[i]->isNumber() && !second->_values[i]->isNumber()) {
auto res = _values[i]->shouldBeFirst(second->_values[i]);
if(res != INCONCLUSIVE) {
return res;
}
} else if(_values[i]->isNumber() && !second->_values[i]->isNumber()) {
auto tmp_local = std::make_shared<Packet>(false);
tmp_local->addValue(std::make_shared<Packet>(true));
tmp_local->_values.back()->setNumber(_values[i]->getNumber());
auto res = tmp_local->shouldBeFirst(second->_values[i]);
if(res != INCONCLUSIVE) {
return res;
}
} else if(!_values[i]->isNumber() && second->_values[i]->isNumber()) {
auto tmp_second = std::make_shared<Packet>(false);
tmp_second->addValue(std::make_shared<Packet>(true));
tmp_second->_values.back()->setNumber(second->_values[i]->getNumber());
auto res = _values[i]->shouldBeFirst(tmp_second);
if(res != INCONCLUSIVE) {
return res;
}
}
}
if(second->_values.size() > _values.size()) {
return RIGHT;
} else if (second->_values.size() < _values.size()) {
return WRONG;
}
return INCONCLUSIVE;
}
void print() {
if(_is_number) {
std::cout << _number;
} else {
std::cout << "[";
if(!_values.empty()) {
for(size_t i = 0; i < _values.size() - 1; i++) {
_values[i]->print();
std::cout << ",";
}
_values.back()->print();
}
std::cout << "]";
}
}
private:
std::vector<std::shared_ptr<Packet>> _values;
bool _is_number = false;
int64_t _number = 0;
};
std::vector<std::pair<std::shared_ptr<Packet>, std::shared_ptr<Packet>>> getPackets( std::ifstream &file ) {
std::vector<std::pair<std::shared_ptr<Packet>, std::shared_ptr<Packet>>> ret{};
char tmp_c = 0;
int64_t tmp_i = 0;
std::string str;
std::shared_ptr<Packet> left = nullptr;
std::shared_ptr<Packet> right = nullptr;
while ( std::getline( file, str ) ) {
if(str.empty()) {
ret.push_back({left, right});
left = nullptr;
right = nullptr;
continue;
}
std::stringstream ss( str );
ss >> tmp_c;
auto packet = std::make_shared<Packet>(false);
std::vector<std::shared_ptr<Packet>> parents = {packet};
while(!parents.empty()) {
if(ss.peek() == '[') {
ss >> tmp_c;
auto tmp_packet = std::make_shared<Packet>(false);
parents.back()->addValue(tmp_packet);
parents.push_back(tmp_packet);
} else if (ss.peek() == ']') {
parents.pop_back();
ss >> tmp_c;
} else if (ss.peek() == ',') {
ss >> tmp_c;
} else {
ss >> tmp_i;
auto tmp_packet = std::make_shared<Packet>(true);
tmp_packet->setNumber(tmp_i);
parents.back()->addValue(tmp_packet);
}
}
if(left == nullptr) {
left = packet;
} else {
right = packet;
}
}
ret.push_back({left, right});
return ret;
}
int64_t part1(const std::vector<std::pair<std::shared_ptr<Packet>,std::shared_ptr<Packet>>> &packets) {
int64_t result = 0;
for(size_t i = 0; i < packets.size(); i++) {
if(packets[i].first->shouldBeFirst(packets[i].second) == RIGHT) {
result += i+1;
}
}
return result;
}
int64_t part2(const std::vector<std::pair<std::shared_ptr<Packet>,std::shared_ptr<Packet>>> &input) {
std::vector<std::shared_ptr<Packet>> packets;
for(auto &in : input) {
packets.push_back(in.first);
packets.push_back(in.second);
}
auto divider_1 = std::make_shared<Packet>(false);
auto divider_2 = std::make_shared<Packet>(false);
auto tmp_packet = std::make_shared<Packet>(false);
auto value_packet = std::make_shared<Packet>(true);
value_packet->setNumber(2);
tmp_packet->addValue(value_packet);
divider_1->addValue(tmp_packet);
packets.push_back(divider_1);
tmp_packet = std::make_shared<Packet>(false);
value_packet = std::make_shared<Packet>(true);
value_packet->setNumber(6);
tmp_packet->addValue(value_packet);
divider_2->addValue(tmp_packet);
packets.push_back(divider_2);
std::sort(packets.begin(), packets.end(),
[](std::shared_ptr<Packet> a, std::shared_ptr<Packet> b){return a->shouldBeFirst(b) == RIGHT;});
int64_t result = 1;
for(size_t i = 0; i < packets.size(); i++) {
if(packets[i] == divider_1 || packets[i] == divider_2) {
result *= i + 1;
}
}
return result;
}
int main() {
std::ifstream input_file( "input" );
auto packets = getPackets( input_file );
std::cout << "Sum of indices of pairs in correct order is \033[91;1m" << part1(packets)
<< "\033[0m." << std::endl;
std::cout << "Product of dividers in ordered packets is \033[91;1m" << part2(packets)
<< "\033[0m." << std::endl;
}