parent
ee446833f1
commit
0db48968c1
3 changed files with 147 additions and 0 deletions
@ -0,0 +1,47 @@ |
|||||||
|
openList = "(", "[", "{", "<" |
||||||
|
closeList = ")", "]", "}", ">" |
||||||
|
scores1 = 3, 57, 1197, 25137 |
||||||
|
|
||||||
|
|
||||||
|
def readLines(): |
||||||
|
with open("input") as file: |
||||||
|
return file.read().splitlines() |
||||||
|
|
||||||
|
|
||||||
|
def solve1(lines): |
||||||
|
counts = [0, 0, 0, 0] |
||||||
|
for line in lines[:]: |
||||||
|
stack = [] |
||||||
|
for char in line: |
||||||
|
if char in openList: |
||||||
|
stack.append(char) |
||||||
|
else: |
||||||
|
last = stack.pop() |
||||||
|
closingIndex = closeList.index(char) |
||||||
|
valid = closingIndex == openList.index(last) |
||||||
|
if not valid: |
||||||
|
counts[closingIndex] += 1 |
||||||
|
lines.remove(line) |
||||||
|
break |
||||||
|
return sum([s * c for s, c in zip(scores1, counts)]), lines |
||||||
|
|
||||||
|
|
||||||
|
def solve2(lines): |
||||||
|
scores = [] |
||||||
|
for line in lines: |
||||||
|
stack = [] |
||||||
|
for char in line: |
||||||
|
stack.append(char) if char in openList else stack.pop() |
||||||
|
stack.reverse() |
||||||
|
score = 0 |
||||||
|
for val in stack: |
||||||
|
score *= 5 |
||||||
|
score += openList.index(val) + 1 |
||||||
|
scores.append(score) |
||||||
|
scores.sort() |
||||||
|
return scores[len(scores) // 2] |
||||||
|
|
||||||
|
|
||||||
|
task1Score, incompleteLines = solve1(readLines()) |
||||||
|
print(task1Score) |
||||||
|
print(solve2(incompleteLines)) |
@ -0,0 +1,90 @@ |
|||||||
|
{[[<[({{[<[[[[<>()]{[][]}][[<>[]]([])]]]{({[[]()]<()<>>}[[()()]<{}()>])<{<[]<>><{}{}>}[<()<>>{[]()}]>} |
||||||
|
[[<{(<{(<<{[[[{}[]]({}<>)]([[]<>][()()])](({<>}[<><>]))}><{({(<>{})<<>{}>}[[{}{}]<()<>>])(((()<>)({}{})){ |
||||||
|
(<[<[[[<(<{[{<[][]>({}())}({<>{}})]({{<>{}}{{}[]}}<[{}()](<>)>)}(<[[{}{}]({}{})]{{{}<>}}>{{{() |
||||||
|
<([({(<[{{{<[<<>[]>[<>]]<{[]<>}<{}>>>}[<<{<>()}<<>{}>>[([]<>)<<>()>]>{(<[]{}>({}()))([[][]]({}()) |
||||||
|
<[{{(((([[<[{{[]()}[[][]]}[<<>()>{<>}]][{[{}{}]<()()>}({()[]}({}()))]>[(<(<>{}]><[()<>]{()[]}>)]]<( |
||||||
|
[<[([(({<{[<[(<>())<{}[]>]>([[()<>][()[]]]<(<><>)>)]}<{{<(<>{})[<>[]]><(()<>){<>[]}>}}[{(({}[])<[][]>){{[]{ |
||||||
|
{<[[{{[{<({[[{{}[]}<{}[]>][<<>{}>{<>[]}]]}{[(({}{})<()))[({}())]](<{<><>}([])><[()[]][()[]]>)})[(((([]())({ |
||||||
|
[{{({<((({({{<{}[]>}[{()[]}{{}<>}]}({{{}()}[{}<>]}{[<><>]}))([(({}{})(<>[]))]([[{}()](()())]))}[[[[[()<>] |
||||||
|
<<[{{<[((({{[({}[])({}())][[(){}]<<>[]>]}[<{{}{}}{()<>}>[<{}{}><<>{}>]]}[<<([]<>)<{}{}]>[<()><<><>>]><<( |
||||||
|
<<[[[(({{{[{{<<>>[{}<>]}}[{([]{})[(){}]}{{{}[]}{{}{}}}]]}{[[[{()}[<>{}]]]{<{()())><[[]]({}())>}]{[{{()}<{ |
||||||
|
[<[[<[(((([<({<><>}{[]()})[(()<>)<<>())]>{{({}{})}(<<>>)}]([<<{}{}>>]<[[{}[]]{()()}]<[[]<>]{<>{}}>>)))) |
||||||
|
<{([({((<{[((<()[]>(()<>))<{(){}}{(){}}>)(<(()<>)}{<()<>><()()>})]}><{({[<<>[]><[]()>]}<<(<><>)[()()]><<{ |
||||||
|
[[{[(<<({([<{[(){}]((){})}<[()<>]{[]{}}>>(<([]<>)>[[()<>](<>())>)]{(([(){}][()<>])<[{}{}]{(){}}>){[[<>{}] |
||||||
|
<<(<<[[[<[<{<{()()}>[(<>()){{}()}]}](({{<>()}<{}{}>}<[[]()][{}<>]>))][[({<{}[]>[()]})([<(){}>[{}]])][{[([ |
||||||
|
{{(([<<(<<<[<{<>{}}]<<[][]>(<>())>][{<<>()>([]{})}[(()[])]]>>>)[([{{<<{}()>{[][]}>}<[{{}[]}]{(<>{})[<>()]} |
||||||
|
<[{{([[<([<{([{}[]])(<{}><<>>)}{[<[][]>[()[]]]((()())[{}[]])}>{[[{[]{}}<<>()>][[<><>][<><>]]]}] |
||||||
|
[[[{[{[[<[<[({{}{}}(<><>))]>]{<(({{}()}(()()))<<[]{}>{()()}>)<[{[][]}<()<>>]{[{}())<<>{}>}>> |
||||||
|
{[<[([<<(<[<[[<>()]<{}<>>](<<>{}><[]{}>)>(<(<>())<{}()>>)]>)[{{<<<(){}><(){}>><<[]<>><()()]>>}}{(<< |
||||||
|
[{<[{{<{{[<[<<[]()>[<><>]>{[{}<>]}][({<>()}([]()))]>]}<[({<<<><>><[][]>>({[]<>}{{}[]})>)[{{<[][]><() |
||||||
|
{[[(({<<<[{<{{{}()}[[]()]}<({}{}){<>[]}>><<[<>[]]>>}{{[(<>{})({}())]((<><>)[[]{}])}}]((<[({}{}){[] |
||||||
|
<({<<<<{(<{<{[<><>}{<>()}}([<>{}])>[<([]{})((){})><(<>[])({}[])>]}((<[<>[]]([]{})>((<>[])<{}() |
||||||
|
<{[(([({{[({(({}())<(){}>)}[({<>[]}<{}[]>)<([]())<{}{}>>])<({[<>[]][()()]})[{{<>{}}([]{})}[[<>()]]]>](<({ |
||||||
|
[{[{<<[<{{(<({[][]}<<>{}>)(<()()>)>[({<>()}[[]{}>)<{{}{}}[(){}]>])((<((){})[<><>]>{(()[])({}{})}){{<()<> |
||||||
|
(<{[(<{{<<[[([()()][(){}])([(){}][()<>])]<({<>{}}{[]{}})<<{}<>>({}{})>>]{{{{[]{}}}({<>{}}({}<>))} |
||||||
|
{[{{{{<((([([<<>()><{}{}>]({[]<>}<<>()>)){({{}<>}[()[]])<[<>[]]{{}()}>}]{[({()[]}[{}<>])<{{}{}}({}{ |
||||||
|
{(([(<<[(((([{[][]}[()[]]][{{}{}}{{}<>}])<<[[][]](()[])>{(()[])({}{})}>))){<{(<{[][]}<<><>>>(( |
||||||
|
<([{<([((<(({([][]){()<>}}<<()[]>{{}<>}>){{(<>())[[]<>]}({{}<>}[{}{}])})>{<{{[(){}]}}[(<()[]>({ |
||||||
|
{([<(<<{[(<<[[{}[]]<()<>>]<[{}[]](<>[])>>(<{<>()}[{}<>]>([(){}][[][]]))>)<[<[<<>[]><()()>][{{}[]} |
||||||
|
{[[(({[[{([<[[<><>](<>[])]<[[]()]([][])>>][<[(<>())[<><>]]>])}]{{{({{([]())(())}(<<>>[()[]))})}{[{[[[]<>] |
||||||
|
<<<([(<{(<([{(<>{})[(){}]}({()()}<()()>)])>[<([<<>[]>{{}()}][<()[]>{()<>}])(({<>[]}<{}[]>)<( |
||||||
|
[[{[{{[{{[[{<{[]{}}{()()}>(<<>[]>(<>{}))}><{(<[]{}>[{}<>])(<()<>>([][]))}<[((){}){[][]}]<{{}()}([]<>)>>>]}{ |
||||||
|
[(<<[[[[({[<{({})}<<<>><[][]>>>{<{<><>}{<><>}>[[{}[]][()]]}]}){({[[(()<>)[()()]]]({(()())<(){}>}{([]{} |
||||||
|
({{[<[<<([{[{<{}<>>({}[])}]({{[][]}}[{{}[]}(<><>)])}][{<[<()<>>({}<>)]({()}{{}})>({{[]{})}({[ |
||||||
|
{(({[[<(({<[[((){}){<>[]}]][((<>())([]<>))<([]()]>]>{{<[()[]]{<>{}}>{<<>[]>({})}}{{[<>{}]}{{()<>}{<>()}} |
||||||
|
([{<(<[({[(<(<()<>>{{}{}})<<[][]><[]{}>>>([{<>}{()<>}][<{}()>([]<>)]))<<{{<>{}}<[]<>>}{<<>()>({}[])}>[ |
||||||
|
<<{(<{{[<{[{<<{}{}>([]())>{[{}[]]{(){}}}}{<[[]<>]>({[]<>}([]{}))}][{((<>[]){<>[]})}]}{({((<>()) |
||||||
|
{((((({[[<[<[{[]{}}][[{}[]]<[][]>]><[<{}{}>{{}{}}]>}({[[()<>]({}[])][[[]]<()<>>]}({{<>()}[<>{}]}<<(){ |
||||||
|
<<((<[<([(({{<<><>>{()[]}}{<(){}>[<>{}]}}[({()<>}){(<>{})<[]{}>}])<<{<{}{}>}[(()())[<>()]] |
||||||
|
[<((([<[<({({((){})}<({}<>)>)[<{(){}}{()<>}><<{}()>[[][]]>]}[({<{}{}>)({[]()}{<>{}}))[<[()<>] |
||||||
|
{[([{<((<(<{[{{}<>}{{}}]({<><>}{[]{}})}>({{([]<>)}}<<{[]<>}[<><>]>{(<><>){[]<>}>>))>))>}][([<[[{({({< |
||||||
|
([[{{({<<[[<[(<>())(<>[])]>[(<{}()>)(({}()){{}[]})]]{<{[(){}]}>(<<<>[]>([][])><([]{})>)}]{{[[({}[] |
||||||
|
{({{({[<<{((({[]()}){{[]{}}(()[])})<((<>()>[{}{}])([<>][[]()])>)(<<<{}()>{[]()}><<[][]>[()[]]>>[<(<>( |
||||||
|
<<{([([[{<<<({()()}{[]()}){{{}<>}[{}<>]}><{{()()}(<><>)}[[(){}>[[][]]]>>{{([{}[]]({}()))[<[]()><<>[]>]}<{<{ |
||||||
|
<(<({({<<[[<<[{}<>]<{}<>>>{{{}<>}{[][]}}>{{{{}[]}[<>()]}[(()())<<>()>]}]<(<{()()}[{}{}]>)<({()<>}{< |
||||||
|
<[{(<[{(([[[[<<>[]><()()>}{([]<>)<[]{}>}]<[(<><>)<[]()>]>]<([(()[])<[]>]{({}<>)(()[])})>]{{{([[]{}] |
||||||
|
<[(<{<[{{[{{<[{}<>][{}()]>[<{}[]><{}()>]}<<<[]<>><()<>>><[()<>]<()()>>>}[{([<>{}]{<>()})(({}{})<(){} |
||||||
|
[[{{[{[({<<<{[{}{}]>{<<>>{<>()}}>>{<(<<>()>{<>()})<(()()){[]()}>>}>}<{<(<({}())[[]<>]><<{} |
||||||
|
(<({<<([[<[({[<>[]](<><>)}{<<>()>[()()]})]({({{}{}}(()))((()())[[]()])})>{<[[[<>[]]<<>{}>]{[< |
||||||
|
[[<<[([{{{([[(<><>)(<>[])]])}}}])]<<({<{({[<<>><<>>]([()<>](()[]))})((<<[]<>>{()()}>)<([{}[]]< |
||||||
|
{({({[[([(<{<{()()}>(<()()>)}{<{<>{}}<(){}>>[(<><>)[{}[]]]}>[(<(()()){<>}><<[]{}><[][]>>)<[<{ |
||||||
|
[[([<{<[([([[{(){}}{(){}}]<{[]()}[<><>]>]({{{}{}}<()<>>}))[(((<>[])({}()))([(){}]<[]<>>))({[( |
||||||
|
<[{({([<<{{([[[]()]{()}]([<><>][{}{}]))}}>[[{<<([][])({}<>)>[<[]{}](<><>)]>[[{<>{}}<{}<>>]((<>[])[<>])] |
||||||
|
(([{(({{{{{[<[<><>]{[][]}>]<<{{}{}}<{}<>>>{(<>())}>}(<{[(){}]{(){}}}[[[]<>]([]<>)]><((()())({ |
||||||
|
([{[<[({((([[[{}{}]<[]>]<([]{})([][])>]))(<<[[(){}](<><>)]>>))(<([({<>{}><<><>>)[{<>{}}(()[])]]<{([]())}> |
||||||
|
{[{((([[(<([{[<>()]{[]<>}}<<[][]>{[][]}>]([<<>[]><{}[]>]{([][])<[][]>}))[<{<<><>>}<<<>()>{ |
||||||
|
({(<[[<{<[{<{[()]<{}<>>}>{[[[]{}]<<>()>]{{<>{}}([]<>]}}}((<{{}()}[[][]]>({<>}{(){}})){<{(){}}( |
||||||
|
{[{[[(((<((({<()<>><<>()>}<[[]()]>){{[(){}}[<>{}]}<<{}<>>{{}()}>})<{<(<>())[<>[]]>[<{}()>[ |
||||||
|
[[{[<{([(<<{({<>}<[]()>)[{(){}}[[]<>]]}>{{(<{}>{{}()})[([]<>)<<>()>]}}>)])}<<<{{([(<()[]>{[]})<<(){}>[[ |
||||||
|
<(([[[{<[[<<([[]()]({}[])){{[]<>}{{}{}}}><<(()<>){[]{}}>[{[][]}]>>[<{{{}{}}}[[[]<>][()[]]]>[{<{}<>><<>[]>}{ |
||||||
|
({{{((({{{({<{{}()}>(<()()>{<><>})}<{<(){}><{}<>>}[<<><>>([]{})]>)[((<<><>><{}{}>))]}}((<{{{() |
||||||
|
{<[({{(<<<[<<(<>())<[]()>>({[]<>}(()<>))>]>>{([[[{<>[]}[{}]]<(()()){[][]}>]])}>{({{{[(()[])([]<>) |
||||||
|
((<{((([(({{{[[][]]}{<<><>>([])}}[{[()()]{()<>}}>})(<<((()<>)<[]()>)[[(){}][[]<>]]>(<([]{}){{}()}>{ |
||||||
|
[[{([(<(<{{<<([]){()<>}>[{[][]}[()[]]]>[<{()()}[<>]><(<>){{}{}}>]}((<[<>()]<{}<>>><<[]<>><<>()>>)[{{{}}} |
||||||
|
[{{[<{([<(<(<[<>]<[]{}>>[[<>{}]{{}{}}])(([()]{<>()})[[()<>]([]{})])>((([<>()}(<>{})){({}()){<>[ |
||||||
|
([{{[<{<[<([<<{}<>>{{}{}>>{{{}}<[]>}])>]><<[{{(<<>[]>)}({(()()){()()}}(([][])))}]<{[[<[]<>>[()<>]]{[[] |
||||||
|
<[({<(<<<(([([()()])([<>()][[]<>])}<<{[]()}<()<>>>{(<>{})[{}[]]}>)({[[()<>](<><>)][[[]{}]<{}()>]}<<[[]()]{() |
||||||
|
((({<<[<[<{{[<{}()>([]())]{[{}<>]<{}()>}}(<(<>[]){{}}>)}{{<<(){}>{{}[]}>[{()()}[<><>]]}<([{}( |
||||||
|
([({[[[<([(<<{<>{}}{<>()}>[<{}{}>(()())]><<[<>[]]({}{})>{{{}()}([]{})}>)[{<[{}{}](()())>([{}()][()])}<[[()( |
||||||
|
<<[([([<([<(([<>()]<()[]>)({()()}([]())))><[{<{}()><{}<>>}[<[][]>{<>()}]]{<{()[]}>{[(){}]{{}<>}} |
||||||
|
<(((<{<([<({<({}{})>{[<>[]][<>[]]}}<<({}[])[<>())>{({}())<<>()>}>)>][[{{{{{}()}{[]()}}<((){}) |
||||||
|
<<<[<[<<[<<<{[{}()][<>{}]}[([]())({})]>[{([]()){()}}({{}[]})]>>([({{()()}[<>{}]}[<[]<>><[]>])](({[<>{}]{() |
||||||
|
{((([<[({{<{<(<>())[[]<>]>}([{[]()}{{}[]}]([[]<>]))>({[[()[]]<()()>]([()<>](()<>))}[[<[]{}>]([()<>][ |
||||||
|
<<([[{[[[{([((()<>)[<>[]])][[{<>()}[(){}]]([[][]]{[]()})])<[{<[]<>>[()[]]}][[<()<>><()()>]( |
||||||
|
[[<[[<{{{[([{<{}{}>{{}{}}}{{()[]}}])]}[[[(<<[]<>>>{{<>()}})([{(){}}(()[])]<{<>[]}[(){}]>)]{[({ |
||||||
|
{[<[[{({((<[{<{}{}>[<><>]}((<><>)[<>{}])][<[()[]]<[]<>>>[[(){}>(()())]]>[({<()[]><()[]>}({(){}})) |
||||||
|
[[(([([[({{<{[[]]([]())}([{}<>](()<>))]}(<<[{}[]]{{}[]}><<[]<>>{[]<>}>><[(<>{})<<>[]>][{{}<>}[[][]]]>)} |
||||||
|
{<{{{{[{({({<<{}{}><()>>}[{<[]()>([]())}(<[]{}>[<>[]])]){{({[]()>(<>[]))[{<>()}<<>{}>]}{[<()()>[{}() |
||||||
|
({[<<<{[<(<({[()[]]<{}()}}<{()<>}<()<>>>)[[<<>{}><[]()>]]><(<<<>[]><<>()>>{(()())})[<[{}()]((){})><((){})( |
||||||
|
<(({(([({<[<{<()<>><<><>>}[(<>)[[]<>]]>((<<>[]>{()<>}))]><[[{[[]<>]([]())}{[()[]](()[])}][({{}<>}[()[]]) |
||||||
|
[<[{{([({{[([(()<>){(){}}](({}())))]({<(())>}))(<({<<>()>{<>{}}}((<>())[[]()]))([<<>{}>(<> |
||||||
|
{{<([<{[<{([{{(){}}[()[]]}([[]()]{<>})]({{()[]}<<><>>}(<{}<>>{[]()})))}{{(<{<>{})<[]()>>[({}{ |
||||||
|
<[{(({{<[[[[[[()<>](<>{})]<([][]){(){}}>]{([[]()][[]()]){{<>()}<<><>>}}](<(((){})[(){}]){<<>{}>}>)]<<{<{<>< |
||||||
|
<<[(<(<(<(<[{({}())(()())}<<{}[]>[(){}]]]{<<<>[]>{<>()}><[<>()]>}>[({{()()}}){[{[]{}}<[]<>>]{{ |
||||||
|
[(([{[{<<((<[[<><>][()<>]]<<{}{}>[[][]]>>(<{[]()}[{}[]]>[([]())({}{})])))>>[{{[{{<()()><(){ |
||||||
|
[({<<{<{(((<{[[]()]}{{()()}(()<>)}>[[(()<>)<<>}]([[]<>]{{}()})]))[[([{<><>}{[]()}])<[((){})[[]<>]]>][ |
||||||
|
([(<<<[(({<<{(()<>)[{}()]}({()[]}{{}<>})>>{({({}())[[]]}{(()<>)<{}()>))}})({[({(<>{})[{}<>] |
||||||
|
[{<{((([((<(<<<>[]}[{}<>]>{<{}<>>[[]()]})>[{{<{}{}>}[([]<>)[[]{}]]}{[<<><>>[[]{}]]}])(((<<[] |
||||||
|
[[[{[[{[{([([<{}()>({}())]<(()[])>)<(<[]{}>{{}}){{[]()}{<>[]}}>]{[<{{}{}}{{}<>}>[[<>[]]<<>{}>] |
||||||
|
{<{<{{([(({[{<<>[]>(<>())}(({}<>)<<>>)](<{{}{}}<{}{}>>[{()()}[<><>]])})[[<<({}{})[{}[]]>[<{}{}>({} |
||||||
|
((<(([{[[<[<{({}{})<{}[]>}{[[]<>][()[]]}>[((<>{})(<><>)){<{}()>(<>{})}]]>(({({<>[]}[{}<>]]<[<> |
@ -0,0 +1,10 @@ |
|||||||
|
[({(<(())[]>[[{[]{<()<>> |
||||||
|
[(()[<>])]({[<{<<[]>>( |
||||||
|
{([(<{}[<>[]}>{[]{[(<()> |
||||||
|
(((({<>}<{<{<>}{[]{[]{} |
||||||
|
[[<[([]))<([[{}[[()]]] |
||||||
|
[{[{({}]{}}([{[{{{}}([] |
||||||
|
{<[[]]>}<{[{[{[]{()[[[] |
||||||
|
[<(<(<(<{}))><([]([]() |
||||||
|
<{([([[(<>()){}]>(<<{{ |
||||||
|
<{([{{}}[<[[[<>{}]]]>[] |
Loading…
Reference in new issue