-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay10.py
156 lines (149 loc) · 10.7 KB
/
Day10.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
input = """[{{{{{<([({{<[<>()][{}()]>{<{}{}>{[]{}}}}{({{}{}][<>{}])(<<>()><{}<>>)}}<[<({}())<{}{}>>[[()[]](<>[])]]<(
(<<({{({((([[{(){}}(<><>)][{[][]}<()()>>][[[()<>]<()()>]])))}(<(<[[{()<>}]({<>{}})]><<(<()[]>[[]{}])>[{{[
<{<{({[<{<{([<<><>>[()[]]])[<{[]<>}<<>()>>]}{{<(()<>)<(){}>>(<[]<>>)}[<[()[]]<<>{}>>[{{}{}}[<><>]]>}>({
[[[[[(<{(<<{<({}<>)<<><>>>{<<>()><<>()>]}<[<{}{}>{<>()}]<[{}[]][{}()]>>>[<({[]}{{}[]})<{<>{
[[{[<(<(<(({{<{}()>{{}<>}}[<()[]><<>{}>]}(<[{}[]][{}[]]><<<>{}><()<>>])))>[[(({[{}[]][{}{}]}{<<>()>[(){}]
<([[<<(([{<<{<[]><(){}>}<[{}][{}{}]>>{({{}()})[[[]()][()()]]}>}][<([[[{}{}][[]]]]<<<{}<>>{[][]
({(<{{([({[{(<{}<>><{}[]>)<<[][]>{[]{}}>}{[{{}[]}[{}{}]]{{{}[]}{(){}}}}]}>]){<<{((([<><>])([<>[]]{{}(
<{{{[{[(({<(<<{}{}>{<><>}>[{()[]}({}[])])([{()()}[<><>]](<{}()>({}())))><<(((){})[[]()])<(<>[
{{<({<<<{<<[[{{}{}}<()[]>]]<<[<>[]]([]{})>[[[]](<>())]>>(([{<><>}])[{{{}()}(<>[])}<{[]<>}[{}
{[<([[[(<[[[{[<>()]<()[]>}]{{{{}[]}{<>{}}}[([]())]}]<[({[]{}}(<>()>){<{}{}><()<>>}][((()[])[()[]])([()()]<[
[([([(<(({{[[((){})({}{})]]<({{}()})<<[]>[<>[]]>>}{({[()()]([][])}(([])[[]<>]))(<{{}{}}[(){}
({(<<({<<<(<[[[]()]]<[<>()]<()[]>}>[<<()()>>(<()[]>[[]])])({<<[]{}>{()[]}>({(){}}<<>[]>)}(<{(){}}<{}()>
<[((<[[{[<<[({[]<>}<<>()>)](<[<><>]>{[{}[]]<{}[]>})><<[[<>()]<[][]>]<[{}<>](<><>)>>{{[<>{}
<<<<<({[{[[[[<{}{}>]{((){}){<>[]}}][<([]{}){[]()}>[(<>())(<>[])]]]{{{<<>{}>({}())}(({}<>)[{}()])}}]({
<[({<((<<[{(<(()()){<><>}><({}{})(<>{})>){[[()<>){{}<>}]([<>()]<[]<>>)}}<<[<{}[]>((){})][{{}[]}{()
{([({{{<[<{{{[<><>>{[]()}}}(<((){})[<>[]]>(<[]<>>{{}<>}))}[[[[()()]<{}()>][[()<>]<{}[]>]]<<<[]()><()
[{{(<[{<<{[{(<()[]>({}{}))[(<>){[]{}}]}({<<>{}>{<>()}}<<[]<>>(()())>)]((<[[]()]{{}{}}>{<<>>{<>{
<[<{(<[({([({([]())([]())}({{}[]}{{}{}}))<{{{}{}}{{}()}}<[<>()][()()]>>]([[[{}{}][<><>]][[()<>]<{}{}>]
[[<<{{<[[{<{({<>[]}[()()])[{()[]}[[]<>]]}<({[]}((){})){[[]()]<<><>>}>>}])><<{(<{{<[]<>>(<><>)}[<<>{}
<([{[(<[<<[(({{}<>}{<><>})<{[]()}>)({{<><>><{}{}>}[([]())[{}()]])]>>[<[[[({}){[]()}][[()][
<<<{(<(<[{([[[[]()]<()<>>](<<>[]>[{}[]])])}<[({<<>{}>([]{})})]>]<[([[({}{})(())]{({}{})}]({(()[])}<<[]{}>[(
[{(([[({[({[[{()[]}<()<>>][[{}[]](<><>)]]((<{}<>>)({{}()}<()()>))}<{[[<>{}][[]()]]<[()()]{()
{(<({<({<{((({()()}<{}[]>)(<(){}>[()()])){<{{}[]}{<>{}}>[<<>{}>[[]<>]]})<(<[<>{}]<{}<>>><[{}][()<>]>)
<{{<<({{<<((<{[]}{()<>}><([][]){<>()}>)[{(<>())[<>[]]}{<<>()>(()())}])>((({{{}<>}<()()>}[(<>{})[
{<({({{[<<<{[({}{})<{}[]>](<[]<>>(<>[]))}>({{{<>[]}({}[])}([()<>]({}<>))})>>({<((<<><>>{[]()})
{[[(<{[<[([<[{{}}]((()<>){{}()})>(({<><>}{{}<>})<[[]]>)]<{[([][])[{}{}]](<[]{}><{}{}>}}[(([])[[]()])]>)]{(<<<
{{((<[<<[[<(({<>}){<<><>>[[]<>]})[{{()<>}<[]{}>}([(){}]<{}{}>)]>]{<{<{()()}{{}}>[{[]<>}>}[<([]()){<>[]
<{{[{[{[(({((<()()>({}<>)){((){})[[]{}]})}([{({}[])(()[])}[[<>{}]{(){}}]>)){(<<<{}>[<>()]>
[<<<[<{<[{(<[[{}[]]([]{})]{<{}{}>{[][]}}>)[([[{}<>]{<>{}}](<{}{}>[{}]))((<<>{}>)<{()()}[[]{}]>)]}]>
(<[<([{({{(([{[]<>}({}[])])<[({}())[{}{}]]{([][])({}<>)}>)<<<[<>{}]><({}<>)<<>()>>><{{()<>}[<>()]}(<<
<{({(<<<{{{[[(<>{}){<><>}][[{}[]]]]<<(<><>){{}<>}><{<>{}}<()<>>>>}[[[((){}){{}()}][{<><>}<()()>]]
<(<({{[[[<<(({{}{}}[<>[]]))(([<><>])<[{}()]<<>{}>>)>><({<<<>>[<>[]]><({}<>)<()[]>>}{(<<><>>{()<>})})>]]{{<
(<([([(<<[[<[<[]>)(([][])[<><>])>]<[({(){}}<{}{}>)[<[][]>{()[]}]][<<<>{}>{(){}}><(()[])[[][]]>]>][{[({[]<>}<{
{{<<<<<([<<((<{}{}>){{{}<>}<[][]]})(({{}()}<[]<>>)<<<>()>[[][]]>)>>])><(<{[{{[[]<>]<[][]>}}]}[<{(
([[<[<({(<<{<((){}][()()]>[<{}()>[<>()]]}{{[<>[]]}{{[][]}{[][]}}}>(({[<>()]{[][]}}(<[]<>>(<>())))<{<()()
[[[[<(<{{<[<([[]{}](()<>))<(<>[])[{}[]]>>{{(()<>)<{}{}>}{[()()][{}{}]}}]<[<<[]()>([]{})>{{
{<[{<[[{{{{{((<><>)[<>[]])([<>{}]([]()))}([[{}[]](())][({}{}){{}()}])}}{((<<[]><(){}>>)<<<{}<>>{[]{}}>((()<>)
<{[<[<{{((<<<[(){}](<>)>>{<[{}{}]<[]{}>>}>)([[{[[]<>][[][]]}(<<>()>(()<>))]>{(<[(){}][<>{}]>
([({[[{([(([({[]{}}(()()))<<{})>])<<<[<><>][(){}]>({[]}{{}()})>([({}[]){(){}}][<<><>>([][])])>)(<([<<>[
[(([[<{(<([({[[]{}]([]())}{<{}{}><[]<>>})(<<{}[]>[[]]>)][{<<[]{}>{{}<>})}([[()()][[]]]<<{}{}><{}{}>>)]
<[[(<<<<{<[{[<[]()>]<(<>[])[[]{}]>}]<<{({}<>)([]<>)}>(((<><>)(()()))<<[][]>(<>)>)>>(<{[[{}[]]<<>{}>]}>
<[<[{([<{(((([[]{}])<<<>()>[(){}]>)){<<[[]{}]{<>{}}>><[<()[]><[][]>]{[{}<>]<[][]>}>}){<{{[
<[{<{<[<[[{{{{[][]}[{}()]}(<[]><()[]>)}<((<>()){()[]})[(<>[])]>}({[[{}[]]{[][]}]}(<<<>()>{<>[]}>[{{}[]}{<><
<{{{<[[{<(((({[]{}}{[]{}})){[{()[]}({}{})]<<<>>(<>[])>})[(([(){}]<()<>>)({{}()}[{}{}]))<{({}[]){[]<>}}{[
<{{([<([(({<<{<>[]}{(){}}>{({}()){{}<>}}>}<(<{<>{}}(()()>><((){})(())>)({<[]><<>>})>)[[{{[
[{([[{<<{[(({{[][]}{{}[]}}[([]{}){()[]}]))({[[()()]][[<>()]{[]<>}]}{[({})[()<>]](<{}()]({}[]))})]}(<[<
{{[{<{[{<<<(({()[]})<<()<>>>)><{<<()()>{[]()}><({}{})<<>{}>>>{<(()())[(){}]><([]<>)[[][]]>}
<[[{{{{(<{<[[[[]()]<<>[]>][{{}{}}<[]()>]][[<{}{}>{{}<>}]{<<>{}>(())}]>{(({{}<>})[([][])<[]{}>]){{(<>{}){
{<<{<{(([(({(<[]<>>{[]<>})[<[]<>><[]{}>]})[<({()<>}{{}{}})((()[])<{}()>)><((())){<()()>{[]}}>])([({[<
<<[<{<{<((<[{[[]<>][()()]}({<>())[<>[]])][[(<>[])[(){}]]]>{{{<[][]>}{[[][]]<{}<>>}}((((){})<()()>)
([<([[(<([([<(()()){(){}}>{(<>())<[]()>}]{({[][]})}){[<(<>())[[]{}]><[{}<>][{}{}]>){(<()>)[<<>{
<[<(([{<[[[{<<<><>>(<>[]}>{{()}<[]()>}}{{<()>([]{})}<{<>[]}<{}[]>>}](<(<{}[]>{{}{}})[[<><>]<{}<>>]>{{<(){}
<{{<(<{<[<(<(<<>>)[<()()><<><>>]>{{<<><>>([]<>)}})(<[([][])][(<>())(<>{})]>{[(()<>)[<><>]]
[(([<<<[{{<{{{{}<>}([]<>)}<[{}[]][[]<>]>}([[[]{}][<><>]])><<[{{}}{[]<>}]<<{}[]>(()())>>[<[<><>]{<>()}>([()()]
{[{([([[[(([{<[]()>([][])}([{}()][{}<>])](<(()[])<[]()>>([[][]])))<(<<(){}><[]()>>{[{}<>]}}({(()())<[][]>}
((<(<{(<({(({([][])[[]{}]})<{<<>()>[<>()]}{[[]{}][[][]]}>){<({[][]}<{}{}>)<(<>())<{}[]>>>}}{{<
([{[<(<(({[[{({}{})[{}<>]}{{<><>}}]{(<()<>>(<>{}))}][([({}[]){<>[]}]{({})})<[{{}<>}(<>())]{(<>{})((){})}>]}
{[<<(<<[([[(<[()[]]([]())>{<<><>>{()()}})[((<>[])<()()>)<(()<>)<{}()>>]][[{[()](())}]]]{<(
(<(<<{{[[{<(({{}<>}{[]<>}){([]<>){[][]}}){(<{}()>{()})[<<>{}>]}>}({[(<<>[]>([]<>))]<[[[]<>]{[]<>
{(<<{<<[<{[{[<<>{}>([]{})]({<>[]]{()[]})}{[((){}){<>()}]{<[][]>([]<>)}}]<((<(){}>{()[]}){[<
<<({({(<[<{{(<(){}>{[]})(<<><>><()()>)}}[({([]){<>{}}}{<<>{}><()<>>})]>(([[(<>()){(){}}]([(){})(<>()))
{<[{(<([[{([<{[][]}([]{})>][([(){}])([[]<>](()[]))])[({[()<>][[]<>]}([<><>][<>[]])>]}]((<(((()
(<[[[[[({<[[<({}<>)>(({}[])[{}()])][<{{}[]}(<>{})><<[]{}>{[]{}}>]]<<[{[]()}<{}[]>]<([]())[<><>]>>>><{<(<[]<>
([[<(<[{<<<<({[]()}{()()})>><<{{<><>}<{}()>}(({}[])<<><>>)><({[]{}}{<>[]})<{[]{}}[[][]]>>>>>}(<[{([
((((({({<{([{{{}()}({}<>)}{<{}[]><{}()>}][(<<><>><<>[]>)[{()<>}]])([[[<>{}][()()]]({<>[]}<()(
<{[({{{{<{((({()<>}<{}<>>)[<[]{}>]){[<<>[]>[(){}]]})}<([<<{}{}>>{(()()){{}()}}][<<{}[]>[(){}]
[({(([({{[{[[(()[])<[]()>]([{}[]][(){}])]{[{()[]}([]<>)]<[<>[]][<>()]>}}<(<({}())(<><>)>(<[]<>>{[]<>}))(({
((<[<{[{<({{([<><>]<<>[]>)[[<>()]({}{})]}([{{}<>}[[]()]]{(<>{})({}<>)}]})<<{<[{}][{}]>[{[]
<(<({(([((<{([<>()]<[][]>)}<{{()<>}([][])}>>)){({[{{[]<>}(<>{})}{{()}<{}<>>}](((()<>)([][]))[{()<>}[()<>]
<([[({[[[({[[((){})(<>[])]][[((){})[{}{}]]([(){}][()<>])]})[[[(<[]<>>[{}[]])([[][]]<<>{}>)][{<[]{}>{<
(([<<[{{[<<<<{{}[]}<[]{}>>{[()<>]({}[])}>(({{}})<({}[])<()<>>>)>>]{{[(((()())<[]()>){[()<>]{<>()}}){
[{<([<({[<([{(<><>){()()}}{<<><>>({})]])<{[<[]()>[[]<>]]({[]()}<[]()>)}[[[(){}]((){})][[{}<>](
[[({{({([({(<{()()}(<>{})>{([]())<[]()>})[([<>[]]{{}()}){([]())[<><>]}]}{{[([][]}[[]]]{<<>(
<(<[({<<[([(<{[]<>}(<>())><([][])({}<>)>)<<{<>()}({}<>)><<{}<>>{()()}>>]({(<{}[]>([][])){<
<[<{<(<({(<[{<()[]>{{}[]}}]({[()()](()[])}{({}{})([]<>)})>({([{}[]][<>()])<<<>{}>({}<>)>}))}<[({<[(
[(<{{<{{(({<<{<>[]}([][])>><{[<>{}](<><>)}{[[]()]}>}((<({}{})<()[]>>)[<{<>[]}[{}<>]>]))({([
[[<[{<(<([([[<()<>>{<><>}]](<<[]()><<>>>[[()[]]({}{})]))])><[((({(()[])<()<>>}[<<>{}><[][]>])<<{(
<<{{<[{({<{<[[()<>][{}()>][({}<>)({}<>)]><<(<><>)[<><>]>>}([<{[][]}({}[])><({}{})>][(<<>()><
([[(([[<{(<{{(()()){[][]}}<{{}}[(){}]>}<{[(){}]<{}{}>}>>{{{{[]<>}(<>[])}[<(){}>([]())])[<[<>
{{(([{({((([[<[]{}>({}[])]({<>})]<[<[]()><[]<>>]({()<>](<>()))>){{[(<><>)[{}[]]][<<>{}>({}())]}(<<[][]>(<>()
({<<{<[{<[(({[<><>]}{{{}[]}[[]{}]}){{{{}[]}<<><>>][([]())(())]})[<<[[]<>]<{}{}>><<{}[]><{}[]>>>({[<>[]]
{[<({<(<[<([{{<>{}}{()<>}}([(){}]<[][]>)][(({}[]){()})([[][]]([]()))]>>]>)[<[(({[{{}[]}(()())]{<{}<>><[][]>}
[([{<{{<({<[({<>[]}{()()})(<[]{}>[()[]])]{{({}[])<()[]>}[([]<>)((){})]}>})[{<<<[{}[]][(){}]
{[[{<[<<[{<([[{}[]][{}()]]{[{}[]]{[]{}}})(({()<>}[{}()}){[[]{}]})>[{[<<>{}>]{({}<>)<{}{}>}}<{[[]<>]
[{{{<([(<[[[(<<>{}><<>[]>){([]<>){[]<>}}]({[[]<>](<><>)}({<>{}}{{}()}))]{(({{}{}}<{}[]>}<<<>>>)}]
{{<({(<(([<{{[()()]<[]<>>}}[<<[]{}>[<>()]>[(()())<<>>]]><<<{()()][<><>]>[<<><>>{()[]}]>{(<()[]>
{{<([<[[{<({{({}())<{}()>}{<{}()>[[][]]}>)<<[<<><>>{()[]}]<{[]<>}(()[])>>>>}([{[<{<>{}}({}())>((<>
[{[(<<(<[[[[({<>()}{<><>})]([<[][]><<>>])]{<({{}<>}[{}{}])[<{}<>><<><>>]>{[<<>[]><<>{}>]{[
((((<{{(<[{{{{()[]}[()<>]}[([]())[<>{}]]}{{[()()]<()<>>}<<<>{}><[]>>}}<((<<>>)[{[][]}<<>()>])<[<[]{}>(
<[<<[<{([(<(<(()())(()())>{(()[])<{}()>})({[[]()][[][]]})><{{{{}>[{}{}]}[<{}()>[(){}]]}{{{()()}{()[
<<<[(([([{<({<(){}>}{[()[]]{<>[]}})}{[(<[]{}>{{}()})({{}<>})]((<()[]>)<([]<>)>)}}({[{{<>()}{<>()}}(<(){}>[
{<<(({[[<<<{(({}{}}{<>[]})[{<>()}{()[]}]}(({<>[]}[{}{}]){{(){}}[()<>]})>[[<{[][]}[<>{}]>][[<()<>><()[]>]{
(([[<({{{({<[(()[])[[]{}]]>}[{(<[][]>[{}<>]){{[]{}}(<>()]}}({[[]()]}[<[][]>([]())])])}{{[{([{}()](<
[([<<({(([<<([[]{}]<()()>){<{}<>>[[]{}]}>[[<[]{}>(<><>)]{{(){}}[<><>]}]><({(<><>)(()())}{{(){}}((){}"""
input_test = """[({(<(())[]>[[{[]{<()<>>
[(()[<>])]({[<{<<[]>>(
{([(<{}[<>[]}>{[]{[(<()>
(((({<>}<{<{<>}{[]{[]{}
[[<[([]))<([[{}[[()]]]
[{[{({}]{}}([{[{{{}}([]
{<[[]]>}<{[{[{[]{()[[[]
[<(<(<(<{}))><([]([]()
<{([([[(<>()){}]>(<<{{
<{([{{}}[<[[[<>{}]]]>[]]"""
def first_star():
global input
input_list = input.split('\n')
err = {')': 3, ']': 57, '}': 1197, '>': 25137}
tab = {')': '(', ']': '[', '}': '{', '>': '<'}
res = 0
for x in input_list:
stack = []
for c in x:
if c in "{[<(":
stack.append(c)
else:
if len(stack) == 0 or stack.pop() != tab[c]:
res += err[c]
break
print(f"First star: {res}")
def second_star():
global input
input_list = input.split('\n')
err = {'(': 1, '[': 2, '{': 3, '<': 4}
tab = {')': '(', ']': '[', '}': '{', '>': '<'}
res = []
for x in input_list:
get_out = False
score = 0
stack = []
for c in x:
if c in "{[<(":
stack.append(c)
else:
if len(stack) == 0 or stack.pop() != tab[c]:
get_out = True
break
if get_out:
continue
while stack:
score *= 5
score += err[stack.pop()]
if score:
res.append(score)
res = sorted(res)
print(f"Second star: {res[len(res)//2]}")
if __name__ == '__main__':
first_star()
second_star()