From baa328165537d96bac7919864cd22315aba311e2 Mon Sep 17 00:00:00 2001 From: Stefan Forstenlechner Date: Fri, 10 Dec 2021 20:44:52 +0100 Subject: [PATCH] Day 10 --- Day10.cs | 43 +++++++++++++++++++++ Day9.cs | 2 +- day10/input | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 Day10.cs create mode 100644 day10/input diff --git a/Day10.cs b/Day10.cs new file mode 100644 index 0000000..fc9bb53 --- /dev/null +++ b/Day10.cs @@ -0,0 +1,43 @@ +#define Day10 +#if Day10 +var bracketScores = new Dictionary() { { ')', 3 }, { ']', 57 }, { '}', 1197 }, { '>', 25137 } }; +var closingBracketExpect = new Dictionary() { { ')', '(' }, { ']', '[' }, { '}', '{' }, { '>', '<' } }; +var openingBracketExpect = closingBracketExpect.ToDictionary(x => x.Value, y => y.Key); + +var completeScores = new Dictionary() { {'(', 1}, {'[', 2}, {'{', 3}, {'<', 4} }; + +var chunkScores = File.ReadAllLines("day10/input") + .Select(CheckChunk) + .ToList(); + +Console.WriteLine(chunkScores.Select(x => x.score).Sum()); + +int half = chunkScores.Count(x => x.score > 0) / 2; + +Console.WriteLine( + chunkScores + .Where(x => x.score == 0) + .Select(x => x.remaining) + .Select(x => x.Aggregate(0L, (score, c) => score * 5 + completeScores[c])) + .OrderBy(x => x) + .Skip(half).First()); + +ChunkScoreAndRemaining CheckChunk(string line) { + var stack = new Stack(); + foreach (var b in line) { + if (openingBracketExpect.Keys.Contains(b)) { + stack.Push(b); + } + else { + char openingBracket = stack.Pop(); + if (openingBracket != closingBracketExpect[b]) { + return new ChunkScoreAndRemaining(bracketScores[b], stack); + } + } + } + + return new ChunkScoreAndRemaining(0, stack); +} + +record ChunkScoreAndRemaining(long score, Stack remaining); +#endif \ No newline at end of file diff --git a/Day9.cs b/Day9.cs index 85e4149..f7c60e9 100644 --- a/Day9.cs +++ b/Day9.cs @@ -1,4 +1,4 @@ -#define Day9 +// #define Day9 #if Day9 var linesSplit = File.ReadAllLines("day9/input") .ToList(); diff --git a/day10/input b/day10/input new file mode 100644 index 0000000..6c388a8 --- /dev/null +++ b/day10/input @@ -0,0 +1,106 @@ +{{(([<((({<(<<[][]>({}[])>[(<>[])(<>{})])<<[<><>][<>()]><([]{}){<>()}>>>}){<[[{<[]()>}{((){})[< +((<(<{{<({<<{[{}()]}(((){}){[]()})><[[()()]<(){}>]{<[][]>{[]<>}}>>}){(<<<<<>{}>>[([]())]>[<{{}()}[()]>{[{} +[{[<(<(<{<{[((()[])[<>{}])][((()<>)[<><>])]}>([<{<{}{}>[{}<>]}[[[]<>]<()<>>>>{[(<>())(()[] +(<{(<{<{<<<[[{[]{}}<()[]>]({[]<>}<(){}>)]>[{<[()()]<()<>>>({[]<>}<()[]>)}]>({[{(()){{}()}} +{[<(<[[(([{{{([]{})[{}{}]}{([][])([]<>))}<<<()()>(()[])><[[]<>]{{}<>}>>}[<<({}())[<>[]]><[{}{}](<> +<[(<{[<{([({<(()[])>([{}[]]{()()})}[[[[][]]((){})]{{{}{}}<()<>>}])[{{[{}[]]{[][]}}}{({[]()}(()<>))[<{}() +[((<[(((({<{[([]<>)({})]<[[][]](()())>}([{[]}([]())](<{}>))><<[[<><>]<()()>]<<()[]>[<>{}]>>>}))( +[{[(<<<<{<<<[{<><>}{(){}>](([]()))><([<>[]]{()()})[[<>[]]{()[]}]>>([[{()[]}{{}<>}]{<[]<>>{[]()}}] +{[[[<([[{[[({{()<>}<()<>>}{(()<>)<<><>>})<[{(){}}(()<>)]{{<><>}<{}()>}>][([(()())[{}()]]<<<><>> +[[[[{{<{<[<[{{[]{}){()()}}]{([(){}]<[]<>>){[{}()]}}>[{{<[][]>(()<>)}}{{<[]<>>{<>()}}([[][]][{}[]])}]]>}[[ +{{<({[([([<{{{[]()}(<>[])}({[]<>}({}<>))}{<<<>()>({}<>)>[[{}<>](<>())]}>][{<[[(){}](()<>)] +[{([<<<[[({[<[<>[]]>{(()<>)([]())}]}]]{<<<<[[]][{}]><<[]()>{<>()}>><<(<><>)(()<>)>([{}<>]{{}()})>>>{{ +<<[<(({{[(<{{((){})([]<>)}({{}<>})}>[[<<{}<>><()<>>>(<()()>[[]()])]([[{}{}]{[]<>}])]){<{(<()[]>{<>()})<([]<> +([({({[{{<(<([<><>]{{}[]})<{<>}({}())>><<{[]{}}<()>>{{<>()}({}{})}))>[[{{{<>()}{(){}}}{{<>[]} +<({[[<[<{[<([[<>{}]<()[]>){{[]()}[<><>]}){<<()<>>{{}<>}><[{}{}]{{}[]}>}><[<<<><>><[]<>>>{{()()}<[]<>>}] +[[{<([{(<[{{([<><>])[[{}()][()()]]}(({<><>}{{}{}})((<>())[{}[]])>}<(<[()()]>)<<<[]{}>[[]()]>[ +{[{((<({<{({{{[][]}{[]{}}}<{(){}}<[][]>>}{<<[]>[[]()]><[[][]]<(){}>>})(<[({}[])(()[])]<([]()) +<[{<{<<[[[([<[[]{}]{[]<>}>(({}{})((){}))]{((<>[])<<>[]>)<{()[]}<<>()>}})<<[[[]()][{}{}]]{({}<>)<<>{}>} +{<{[[(<(({<({<{}()>({}{})}[{[]()}{<>()}))[<[[]<>](<>())>]>}){([{([{}<>]{()<>})((<>{})<()>) +{[(([{{[({{[(([][])[()()]){{<>{}}}]({<<>()><<>()]}(<[][]>(<>[])))}<[([[]()]{(){}}){(<>{})[[]()]}]>}[{<[[<>{ +(([(<(<<{(([(<()><[]{}>){(<><>)[{}[]]}][([[]{}])(<[]()>[{}<>])]))[({<{[]()}>{{[]()}<()[]>}}[{ +{(<<<[[[<[<<<[<>[]]<[][]>><{<>{}}(<>)>>[{[()<>][{}[]]}{{<><>}<[]{}>}]>([[{[]()}][[()<>]([]())]] +<(({{{<[{[([{{()()}[{}()]}<{(){}}[<>[]]>])[((({}[])<[][]>){[{}[]][{}<>]}){[<[]()>[<>{}]]([{}()]((){}))}]]<<{( +<{{{(<[[<({{([<><>]){<[]<>><<>()>}}[[(()<>)<[]<>>]{([]())[(){}]}]})({([(()<>)[[]()}][{(){}}{<><>}])(((()() +<{<[{<[{{({{<[()<>]<[][]>>}}{<<<<>>({}{})>[<[]<>>]>((<{}<>>{<><>})[{[]}[{}()]>)})}}]>[(<(<<<{([]{})({}<>)}( +(<[[{[{[[{[[{<[]<>>(<>())}{[<>{}><(){}>}]<[<<>[]><[]()>]{[[][]]<{}{}>}>]{{{<<>()>{<>()}}}<< +(<<{{[({({[[[({}()){(){}}]]{<{<>}<()<>>>(<{}()>[[][]])}]{{{{<><>}(<>)}{{(){}}[()()]}})}){(<<[([][])<[]{}> +<({[<<{<<{{([<{}{}>{()[]}](<()<>><{}{}>))[{{{}<>}}<<<>[]>[{}{}]>]}[({<[]()>}{{{}[]}})]}>[<[< +<{[(({{[(<[(({{}<>})((()<>)))(<{()()}[[]()]>)]><({{({}{})[<>]}([{}<>]{()[]})})>)(<(<<((){})[()<>]>{([] +({<((<<(({([[[[]()]{{}<>}}([<>()]{{}[]})]<([<>{}]{<><>})>)[[{<[]<>>((){})}{([]())<{}<>>}][[<<> +({{{[<{(<[({({[]()}{<>[]}){(()[])({}{})}])(<[(()<>)]>({<()>{{}{}}}<(()[])[()[]]>))]{{[(((){}){{}{}}) +{{{<{<{[((<{[<(){}><{}<>>]}>)}]}({{<((<<<>{}>>{<[]()>({}())})(<([])<[]{}>>{(<>())([][])})){< +<{({{(<[[<({((<>{})[()()])(<()()>[<><>])})(<[{[]{}}<{}{}>]({[]{}}{[]<>})>(<[{}[]]{<>()}><{{}[]}((){})>)) +[(<[[(<([[({[{<>()}{[]<>}](<<>{}>[[]{}])}[{[{}<>]{()[]}}<<{}()>{<>()}>])[((<()<>>{[][]})<(<>() +[{[<{{[({[(({[{}[]]<{}<>>}{([]<>)<[]{}>})[{[[]()]{[]()}}<[{}()]{<><>}>])([{{{}<>}{<><>}}({{}()}{<>[]} +<[[<[((({([[({<>()}{<>[]})]{{<(){}>[()[]]}{<[][]>[(){}]}}])}{{((<<{}[]>([]{})><([]{})[<>()]>)){ +({<{<<(<{([(<[{}{}][{}[]]>)([([]()){<>[]}]<{()()}<()<>>>)])[<[[{{}{}}][{{}[]}{{}{}}]]{[<[][]><<>()>]<[{}()]{ +(({<<{<([{{{[<()<>>([][])]{(<>())<<>()>}}<[<<><>>]{<()[]>}>}{[{[{}{}][()()]}{<{}{}>{{}<>}}]{[{[ +{[{[<{(<{(<({((){}){<>[]}}([()<>]<{}<>>)){(<()[]><<>>)(<()<>><{}[]>)}>([(([]())[()[]])]<[<{}{}><()[])][ +({[{({((<<<(<<<>>>{{{}[]}<<><>>})>[([([]<>){{}[]}>{{()()}({}{})})[{({}{})(<>[])}]]>[(<({[][]})<[<>[]] +[[{{<<(<[([{({()<>}[{}()])({<>()}<<>()>)}])][{([<<<>()>{[]{}}>]([[{}<>][<>[]]]({<><>}{()[]})))([[({})< +[<{<({[<{[[[<<(){}>>{[()()](<>[])}]][(({[]{}}{()[]})){<{()<>}[[]{}]>({()()}(<>{}))}]]{<[<{[]{}}>](<[[]{}]{{}[ +<<[[<((<<[([([()[]]{[][]})({{}{}}{<>()})]<[{<><>}[<>()]]{[[]{}](()<>)}>)<<{<()<>>{[]()}}{{[]{}}[[]{ +{[[([([[{<[[[<()[]><{}>]{({}[])(<>{})}]<<(<>[]){[]<>}>[(<>{})(()<>)]>]({((()()){[]<>})[<[]{}><{}()>]}{{(()[ +[{{{([<(<(({{<()[]>{()()}}[<<>()>{{}()}]}<<([]<>)[<>()]>(<()<>>{<><>})>)({[{[][]}{[][]}]<<<> +<(<(((<([{{(<{<>[]}[()[]]>[<{}{}><<>()>]){({<>}([]<>))<{{}<>}[()<>]>}}}(<([[[]<>]]((()<>){<><>})>[<{<>[]}[<> +<<[<[[<(([({[{()()}<()[]]][{{}[]}<<>[]>]}[[[()<>]]([{}()]([]))])]{([[<[][]>[{}{}]]<({}{}){[][]}>])[<[[[][]]( +[({<{{{([[(({[<>[]]}{<<>()>[(){}]})[<[<>()][{}]>{(()())}]){{[{<>{}}]{[{}](()())}}{[[<>()][<><>]]}}]](<<[{{{ +{({{[[({<([{[<<>[]>]<<{}[]><[][]>>}({(()<>)<<><>>}[[{}<>][[][]]])]<[<{()}{<><>}>]({{[]<>}[{}()]}<({}( +(<<<{(({[[(<<<<><>>{<><>}><<{}[]><[]>>>(<({}()){[]{}}>[{<><>}([]{})]))<<([{}()][[]{}))[<<>>[[]()]]> +(<<({{<({<{<[[<><>]]<<<><>>[[]<>]>>(<{{}()}[()]><<(){}>(()<>)>)}[[<[[]()]<<><>>>[({}()){()[]}]][<[<>{}](()[ +([[({[[{([[{<([]{}){{}()}>{(<>[])}}[(([]{}){()()})]][<<([]{})([]())>>[((()<>))<(()<>)[[]<>]> +([({{({{<{((<<()[]><<><>>><{{}[]>[<>[]]>)<({()<>}[<>{}])[{()[]}[[][]]]>)<([<()()>({}{})](<[]()>))<[[[]()]<( +<<<<[(<({<[<[(()()){<>()}]<[<><>]{[]{}}>>]>([[{<()>{[][]}}](<[()[]]<<><>>>([<>()]<{}[]>))]{<{{< +[[<{<([<(({{<<{}<>>>{<<>[]>(<>[])}}})[{[{<<>{}>(()[]]}]}])>][{(<<({[[][]]{{}<>}}<({}{})({} +([<([<((<<<<({<><>}[<>[]]){{()()}(<>{})}><[({}<>)[()()]])>[<<[()]<<>[]>>>]>[([{{<><>}{{}{}}}([[]()] +(<<<((<[(<({[{[]<>}[{}{}]]<(<>())[()<>]}})>)[{({[<()<>><{}{}>][[[]<>](<>[])]}[([()()](()[]))<({}{})(<> +<(<[(({[(([<[[()<>]{<>{}}]((()[]){[]{}})><<({})(<>)}[[[]()][<>{}]]>]<{[<()><()()>]<<{}{}>[{}()]>}> +<<[<{<<(({<<((<>{})[[]{}])[{()()}{[]<>}]>{((<>()))[{<>[]}]}>({<<[][]>(()())><<[]<>>{[]{}}>}<({()()}<{} +<{{<([{[{<([([[]()]<[]>){[()[]][(){}]}]<[{{}()}[{}[]]]>)({[<{}<>>]((<>[])<{}{}>)>{({{}{}}({}<>)){{{ +{[{{(<[[(<[(((<>[])[()[]])([()()]<()<>>)){[{[][]}[<>{}]]}]><{<((()<>)(<><>))<<()<>>(()())>>{[<[]()>]{((){})< +(((<<<[<<<<[(([]{})[[]()]){[(){}]}][{<<>()>{{}<>})<(<><>)([][])>]><{<[{}<>]{()[]}><<<><>>( +[<([<(([([(<<[[]<>]>{<<>()><(){}>}>{{{<><>}]<{<>[]}{<><>}>}){[{[{}{}][[]()]}]<([{}()][()()]){([][])[()<>]}>} +[[(<[([<[{(<[<{}()><{}[]>][({}[]){()<>}]>[{[[][]]<[]()>}<{()<>}(()[])>])[[{({}{})<()>}([{}<>][{}])]]}({({{[ +[<{{<{[[[<([<{[]{}}{[]{}}>{{{}()}([]{})}]]{[{<()()>[<>[]]}[[<>()][<>()]]]([<[]<>>(()[])]{({ +<(<(<({[{((([<[]<>>])<[({}{})(<><>)][[<>{}]<()[]>]>))}<{{<(([]<>){{}{}})>}<<({{}{}}({}())){[(){}]{<><>}}><( +((<{<[<{([[[([[][]]{{}())){<{}{}><<>()>}]][[(([][])[()<>])]]])[<({((()<>){[]{}})[<{}><()[]>] +[[{<[{((([<[(<()<>>){((){})(()())}]{[[{}{}][[]]]}>]((<{{<>[]}<<><>>}[[<><>]<{}[]}]>){[[[()] +{[<<<[(<{[[[<{<><>}(<>{})><[[]{}]<()<>>>]{{[()[]]<[]<>)}[<()<>>(<><>)]}]]}>([[{({([]<>)}<[()<>]{( +<<[<([[<{([(<([]{})[{}[]]><<()()>{()()}>)({[{}()]<<>()>}({[]}({}<>)))]){({<[<>[]]{<>()}>}){{{{()<> +[([(<[[{[{[[<<{}()><{}<>>>(<()[]><()>)]][<{[(){}]{()()}}(<<><>>[[]{}])>]}](<<<(<{}[]><()()>)<{{} +{[({([[<<[[[([(){}](()<>))]][(({{}()}([]))[{[]()}{[]{}}])<<({}<>)>(<[][]><(){}>)>]](<((<[]{ +(<(([(<<[([({{()<>}([][])}<([]{})>)<{<<>{}>}[<[][]><<>()>]>][(({()[]}[()[]]){{{}{}}{<>()}})[(({}[])<[]>)({()} +{[<<{<((<{[({{[]}{()}}[[()()]{[]<>}])<<[()<>][()<>]>({<>()}<()[]])>](<{<()<>><()>}[[()()]]>)}<{[<[[][ +<[<{<{([({[<{({})[[]<>]}[(()<>)<<>()>]>[[{<>()}[()()]]<[{}{}]<<><>>>]]<{[{()[]}]{(<>{})([]<>)}}({[[]<>]<{}{ +{{<[{{<[[<{{{{<>()}{(){}}}(<[]>)}}[[<{[][]}{<>{}}>[(<>{})(<><>)]]([{()[]}((){})][{(){}><()[]>])]>]{([( +{([({([<({{[[<{}{}>{<>{}}}([[]()]{(){}})](<{{}[]}[<>[]]>[{()()}(<>)])}[([<<><>>{[]()}]((<>()){()<>}))[<[<>[ +<({[({<<<[[{<<{}[]>{[]<>}><({}())(()[])}}([[{}[]][<>()]][<{}<>>])]]>>>}{([[(([[<<><>><<>()>]]{{({}[]) +[([[(<{[[<{(([[]<>])[{()()}[[]()]])}[<<<<>[]><()[]>>><[(<><>)[{}{}]]<[<>{}]<()[]>>>]>{(<<([][])[<>]>{(<>{})[ +{[(<{(([<[{({({}{}){()()}}<[<><>]<{}()>>){(({}[]]{{}<>}){([]{})}}}<[[({}<>)]{[[][]]<()<>>}][[[[]{}]{[]()}]]> +[<(({[{{[{<(((<>{})<<><>>)<{[][]}>){(<[]()>{<>{}})[(<>[])[()<>]]}>[<(({}<>)[<>[]])[{<>[]}(()<>)]>({<[]<>>}[ +(<({<({([({[{{{}{}}(()<>)}<{<>()}(<>[])>][[{[][]}{<>{}}]{{()[]}{()<>}}]}{<({[]{}}<()<>>)>({({}())[{}() +{{[<[{{<<[(<<<<>()>>([<>{}])>)([<{[]()}{[]{}}>][[(<>[]){[]{}}][<<>[]><()()>]]>][<<[{[]}({}())]{[<>{}]([ +<<<<{({[[[[[{<()<>>{{}<>}}{{[]{}}((){})}]{[{(){}}[[]{}]]{<<>()>(()())}}]<(<[()<>]{()}>[[[]<>](<>[])])((( +{<[([<{<<<<{((<>{})<()()>){([]())[()[]]}}>><<<(<[]()>(<><>)){<<>[]><[][]>}>[[<()<>>(()<>)] +[<(<([{{<<{<<({}())><<{}<>><{}<>>>>}{([[[][]]({}{})])}>><([[[{[][]}{<>()}]][([[][]][()[]])<<{} +({(({(<{([{<[(()())<{}<>>]>[<(<>())[<>[]]><([]<>)[()<>]>]}][{(({<><>}([]())))}]>}[[{<{<[()()][<>{}]>{({}<>)} +[{[<<<{(<[<({({}<>)}{{()<>}([]())})<(<()<>>[[][]]){<<>()>}]>]{(<[{(){}}<<>{}>]{{{}[]}<(){}>}>{[([][] +(<{<[{<((([[{[{}[]][<>[]]]{[()()][{}{}]}]([<()[]>{<>{}}])])[(<{[<><>]{<>{}}}><<([][])>>){[{({}<>)<{} +{({[<[([{[[[[([]()){{}<>}][<{}[]>{{}[]}]]([{{}{}}{{}[]}]<([]<>)>)]<([<[]()><(){}>](<()<>>(<>{})))>] +{{{<<({(<[[{{[<>{}]}<({}<>)<[][]>>}(<{()()}[()<>]><{{}[]}[{}[]}>)](<{{<>()}<[][]>}>)][<(<<<>>([]())>)[{<<>()> +[([[{[(({(<[{(<><>){{}<>}}{(<>[]){[][]}}]{(({}[]])(<[]{}>({}[]))}>[(<{<><>}{<>()}>[({}())<[][]>])[{<{}{}> +{({{[<<{<<[<{{[]{}}([])}>([(<>{}]<{}<>>][<<>[]>{<>}])]{<[{(){}}{[]{}}]<<()<>>[{}]>>([{()()}<{}<>> +{[{<[([<((([[(())[{}<>]]<<<>{}>{<>[]}>](([[]{}]{[]{}}){[()]})){<<[[]()][[]()]>(<<>{}>[()[]])><<<<> +<[([[<{{([([(<[][]>[(){}])((()[])(<>))][[[[]<>][{}()]][<[][]>{<>()}]])<[[<()()>(()())}[<[][]>[()()]]]{<{[]{}} +{(({(<{({[[({{<>()}[()()]}[{[]<>}[[]<>]])([({}{})<{}()>]((()<>){()()}))]][{<({{}()}(<><>))[<(){}><()[]> +[{[[([[<[<[(<<[][]>[<>[]]>{(<><>)<[]<>>}){((()())[()]){[<>{}]<{}[]>}}]><[[{(()[])<()<>>}][[<<><>> +[<({({<[[<[{{({}{})<<><>>}<{()[]}{[]<>}>}[[{()()}]<[()()){{}()}>]][[<[<>()][{}[]]>{[{}<>](<>{})}]{{(<>())(< +(<(((({[[<<{<{()()}<<>[]>>}[([[]{}]<<>()>)]><[<[{}[]]{{}{}}>{<<>{}>{{}()}}]>>({({<(){}>({})}([()<>]{<><>} +<{({<<(([<({[{[]()]]<[<>()]<<>{}>>})((<<[]<>>(<>{})>)[[[<>{}]([][])](({}{})<[]{}>)])>](<[({{()()}([] +<[({[{[[[[[<[[<>()}([])]([()()]<<><>>)>[{{<>{}}[()]}{{<>[]}<<>{}>}]]{[<{()<>}([]<>)>({{}[]}<()[]>)]}]< +[(({(<((({{[((()[]){(){}})([[]{}][{}()])]}<{{(<>()){[]()}}<([]())[()<>]>}<<(<><>)([][])>[{()[]}<<>[]>]>>}[{ +{([<{({[<{{{[[[]<>]]}(<([]<>)<<>{}>>({{}<>}(<><>)))}}>][{[<[{([]<>){<>{}}}(([][]){[][]})]>(({(<>{}){{}[]}} +(<[([<{<(<([[{()<>}][{{}<>}(()())]]<([[]()]{[]<>})>)>[<<<<()<>>(()())>{{()<>}<<>{}>}><((<><>))>>({{{[ +<{([<[[{<<((<{{}()}<()()>>[<<>[]>{<>()}]]){({[{}](()<>)}<(()[])<()[]>>)[[[{}[]]({}[])]{{[][]}({}[] +{{([[<(((([(([{}()][{}<>])<([]())>)[[[{}[]]([]{})]]]([[(()<>){<>[]}][[[]{}}<()[]>]]{[{{}[]}{