days 10-11
							parent
							
								
									b49cb6a1ab
								
							
						
					
					
						commit
						5125b326b3
					
				| @ -0,0 +1,102 @@ | |||||||
|  | [<[{<[(([<[[{[()()]}]{<<<>[]>[()[]]>{(<>[]){<>[]}}}]<{(<()<>>{()<>})(<()>)}([{()[]}](<()<>> | ||||||
|  | <[(<({[<(<<({({}[])[<>]}[<<>{}>[()()]])>>)>]})>{[([({[{{<[[]{}]{{}}><{()[]}[{}]>}}{{[<<>()>((){}) | ||||||
|  | {<({([<([[<<[(<>())({}{})](<()()>{{}})>(([[]{}]<[][]>){<{}>{<>{}}})>]][[((<[<>()]<<>[]>>{{()[]}{[]{} | ||||||
|  | ([{({<<{<<<{([{}[]]([]())){[(){}]}}{[<{}()>(<>[])]}][({[()<>][<><>]}{{{}[]}})<<<{}()>>>]>([[<[{}<>] | ||||||
|  | {([{({(<{[<(<(()()){{}()}>[(<><>)<<>[]>])[{{{}()}[(){}]}[<()[]>[{}[])]]>{([{{}{}}{[]}][{{}<>}{<><>}]){[[[]() | ||||||
|  | [{(([[{([(({(<{}()>({}<>))((()())(<>[]))}{<{{}[]}[{}()]>{{()()})})<{{([]{})[<>[]]}[{<>[]}{ | ||||||
|  | <<([{{({{{[(<[<>()][()<>]>)]}<(<<<<>()><{}()>>><({{}<>}{()[]}){<(){}>}>)>>})<[{[<([[{}{}]{{}()}] | ||||||
|  | <[{{[<[{(<<([([]{})]<[[]{}]{<>()}>)(<<<>{}>{{}[]]>(<[]()>(()[])))><<[{[][]}{[]}](([])([]))><({{}{}}{[][]}) | ||||||
|  | {{{({{{([<<<{[()]({}{})}((()[])<()<>>)>{{<{}<>><{}()>}}>(<<(())({}())>{{{}}({}())}>{<[{}<>]<{}{}>>[{<>()} | ||||||
|  | {<({<[{[<<{{[[[][]][<><>]](([]{})<()[]>)}<<((){})><[[][]](<><>)>>}{(<<{}<>><<>>><((){})([]<>)>)<(([]))( | ||||||
|  | ({{{([({<((<<<()>[[]<>]>(<<><>>(()()))>))>})]){({[<[<<[[{}{}]][([]<>)]><{<{}()><()<>>}(<[][]>[{}()])]>{({{ | ||||||
|  | (<{<<[[[(<{<({<>()}{{}<>})<<()()>(<>[])>>(({{}()}([])))}>([[<({}())({}())]((<>{})<<><>>)][[<( | ||||||
|  | [([({{{[<([<[(<>[])[{}[]]]<[[]{}][<>]>>])<(((<()<>>(<>{}])({<>{}}[{}<>]))<([()()]{[]<>})({<>()}[{} | ||||||
|  | <(<<([{{[<((({<><>}<<>>)[[[]<>]({}())]){(<<>()>{[]()})[<()>{[][]}]})>]<[[[{(<>{})<(){}>}[{<>{}}]]]][ | ||||||
|  | {[[[{[(((<{[{([]{})[[][]]}(<{}()><<>[]>)][<[<>{}]>]}>({([(()())<[]{}>](([]{})[<>{}])][[{[]{}}<<>{}>]({{}}[<> | ||||||
|  | {{{([[<[({<<<({}{})<[]()>>[[<>[]>{<>[]}]>[({<>[]}({}<>))[[[]()][()<>]]]>})]>]<(<<<<[<((){})<{}{}>><{()()}(( | ||||||
|  | [{<<<[((<{{{[<{}{}>[{}{}]]([{}<>]{{}<>})}{{[{}{}][{}]}({[]<>}{<><>})}][([<[]<>><{}<>>][<(){}>(() | ||||||
|  | [{<(<[{(<(<((((){})<[]<>>)[{()<>}{[]<>}])><(((<>)(<>[]))(<[]<>>))([<<><>>[[]<>]]{<[]()>{()[]}})>){<({{[][ | ||||||
|  | <(<<<[([[<{{(({}[])[<>{}])<(()<>)({}{})>}}>{{([(<>())<()[]>]{{[]<>}})<[[<>()]](<()[]>)>}<{[<{}<>><{}[]>]( | ||||||
|  | {((<[<[<(<[({{{}<>}(()<>)}{(<>{})[[]{}]})(((()[])))]>)[{([([<><>][{}[]])[<()[]>(<>[])]]({[ | ||||||
|  | [({([<([({<(<<(){}><{}<>>>{{<>[]}[()[]]})[[[{}[]](()())]]]({[{(){}}{()}]<{{}()}{{}()}>}[([[][]][()[ | ||||||
|  | ({[[{[[({{[[(<<><>>{()}){[()()]}]<{{<><>}({}())}{{[][]}{()()>}>]<[{<<>[]>[[]<>]}]<[<()[]><( | ||||||
|  | (<[{[(<{(<{{[{<><>}{[][]}](<(){}><[]()>)}}><{<(<<>()>([]<>))<({}<>){{}()}>>}{([(()[]}[<>[]]])<{{[]{}} | ||||||
|  | <{{(<([(<<<<[{{}<>}(()[])][<{}[]>[<>[]]]><<{[]()}(()<>)>({()<>}({}[]))>><[(([]{}))[{<><>}([][])]]{{(<>())}( | ||||||
|  | {<[(<{[[(<<[{<(){}>{<><>}}((()<>){<>()})]<[[{}<>]{{}[]}]{([])([]{})}>><{(<{}[]><()<>>)}<(({}()]{[ | ||||||
|  | [{[([([{{{{([(()[])[()()]])[[(<>{})[{}[]]]]}}}{<({[<()[]><{}()]]}{[[[]()]{()()}]})<<<[{}<>](<>[])>[(()<>)([] | ||||||
|  | {(<{([<<<((({[{}<>]({}())}))[{{((){})[()()]}<{{}<>}<()[]>>}{{{[]()}}}]){((((()())(())){(<>{}){{ | ||||||
|  | {<<{{{([[<{<<[{}<>][<>[]]>>(([()()](<>[])){([]{})})}>{<((<<>()><[]<>>)({[][]}[[]{}])){(<(){}><{}>)( | ||||||
|  | [[[{[{{{{[<{((<>())((){}))(([]{}){()()})}>([[[{}{}]{[]()}]{(()())<{}[]>}][{((){})<{}[]>}<<[]>< | ||||||
|  | (<[[<[{[<(<[<<{}[]>[[]<>]>((()<>)[<>[]])]{[[{}<>]({}{})](<[][]><[]{}>)}>([{(<>[])<{}{}>}({(){}}[()<>])] | ||||||
|  | {{<[{({([[(([[{}<>][{}<>]][[<><>]]))<([({}()){[]()}](({}())<{}<>>))>]<{<(({}{})[[]<>])[<{}{ | ||||||
|  | [[({(<[<<{<{<({}())(()[])><((){})[()<>]>}{{<()>(<>[])}}><[([[][]]<()<>>)][<(<>())[()()]>{(<>())}]>)>((<<[ | ||||||
|  | [([{<<[(([((<<()[]><{}[]>>[{<>()}<()[])]){[{()[]}{<>[]}]{{<>}(()())}})<[(({}{})(()[]))(<[] | ||||||
|  | ((<<{{{<<[{[<<[][]>[<><>]>(({}<>)(<><>))](<<[]<>>(<>[])>[<<>{}>((){})])}]>>(({{([<<><>>{{} | ||||||
|  | ([<(([[[((<(([<>()]<()<>>)<[[]()][{}()]>){<(()<>){()()}>}>{(<(()()){{}<>}><<[]<>>[(){}]>)[<<{}{}>{[] | ||||||
|  | ({[<<[{<{<<<[<{}[]>]{[[][]]{[]()}}][{<<><>>(()())}({{}[]}<{}[]>)]>>((([<{}{}>({}())]({{}() | ||||||
|  | {{[<<<[{(([<[<(){}><<>[]>]({<>[]}[<>{}])>]([<[[][]][[]{}]>({[]<>}[()<>])]))(([({{}()}{<><>})[[()()](<>[] | ||||||
|  | [([{(<[<([[(<(()[]){(){}}>)[[<[]()>([]())]({[]<>}<{}()>)]]([<{[][]}(()<>)><[{}[]][()[]]>]<[<{ | ||||||
|  | (<[([<<<(<[({(())(()[])}<{<>()}{{}()}>)[[{()[]}<<>[]}]{[<>()][{}{}]}]]>{{[({<>[]})][([[]()]<{}< | ||||||
|  | [[[<<{({[{{<[[[]()]<(){}>]{([])<()[]>}>[[({}[])[[]<>]][<(){}>[()<>>]]}{<(<[]()>{{}<>})<(<>[])({} | ||||||
|  | <{[[<[[{[[(<<{(){}}({}<>)>({{}()}([][]))}([<[]{}>(<><>)]))<{{<[]<>>(()<>)}([[]()]({}[]))}({[<>{} | ||||||
|  | (<[<[{{([{(<[[()()]]{{<>()}{<><>}}>(<[()[]]{[][]]>({<><>}<<>[]>)))((<<()[]>>)[[<{}[]>]<[{}()]<{}<>>>])}[ | ||||||
|  | {{{[<{[((<([<{(){}}{{}[]}>{[(){}][{}{}]}])<<[<<>[])(()())][((){})]>{({()[]}[[]{}])}>>){[({ | ||||||
|  | {(((<(<{(<<((<[]()>))({({}<>)({}<>)})>>)}>)><[[<[<[[{(<><>)({}())}(({}<>){()[]})]]{{[{<>{}} | ||||||
|  | {{(<<(<([({(({[]{}}{{}[]})<(()())[()()]>)}<{{[{}<>](<>{})}{{{}()}{<>{}}})(({{}{}})(<[][]>{{}()}))>){[<[{<>()} | ||||||
|  | [(<{<([[[<({[{<><>}{<>{}}][{()<>}{<>()}]}<(<()[]><()<>>)>)><<([[{}{}]]([<>[]][[]<>]))(<<<>()>[()<>]> | ||||||
|  | ({<{(<{[(<<(<([][])[(){}]>{({}<>)[{}[]]}){(({}[])[()()))(<[][]>(()<>))}>>)((<(<({}[]){[]()}>){({<>()}[{} | ||||||
|  | {<[([<<[(<{((<{}<>>)(<{}[]>{{}[]}))}(<[<[]()>([]())]{[{}]<<>[]>}><[{{}<>}[{}[]]](([]<>)<{}{}>)>)>){ | ||||||
|  | [(({<([(<<[<<[[]<>]<()()>>{({})([]{})}>]<[{[<>()]{[]<>}}{{{}<>}<<>()>}]>>>((<{(<<><>>{[]{}})({<>[]}((){ | ||||||
|  | {[[([[{<<[[[<[<>{}]{<>()}>({{}()}[()<>])]]({{<{}[]><<><>>}{<()<>>}}{{{[]()}<()<>>}<(<>[])(()[])>} | ||||||
|  | {<{<{{{{[[[((<{}{}>{{}{}})<{{}{}}{(){}}>)[[(()<>)]]]({{([]())[<>[]]}}[{<[]<>>((){})}([[]<>])])] | ||||||
|  | <[({({[[<(<({([]<>)[<>]}[[()[]]([])])<(<(){}>(()[]))[<<>()>[[]{}]]>>>><{[{<[{}{}][{}()]>{([]())[<><>]}}<{<< | ||||||
|  | [{<([<[(<({[<[<>]<{}[]>>{({}<>)[[]<>]}]{{{[]<>}(()[])}<(())>}}[({{[]()}{{}{}}}{{[]{}}[()[]]})])<{({{(){}} | ||||||
|  | {{([(([{{{((<[()[]][<>{}]>[<<>()>[[][]]])<{<{}>[(){}]}{({}())[()()]}>)({({<>[]}<[]()})<({}{})<< | ||||||
|  | (<(<{([<((<{<<{}<>>[()()]>({[]<>})}([[<>()]([]())])>{([{{}[]}(<>[])]{[[][]]{[][]}})}))>(<[{ | ||||||
|  | [({{{(<[{{{<(<{}>)<{<>()}<(){}>>>[[{()()}(()<>)][[[][]]([][])]]}}}((({((<>{}){{}{}))[{{}<> | ||||||
|  | [<(([(<[{[<<({(){}})([<>[]){[]()})>>([[<()[]><{}>]])]<({[{()<>}<[]<>>][[<>()]]})>}]>)]{<{<( | ||||||
|  | ([(({({{{[[{(<[][]><{}<>>)}[((<><>)(()<>))<{<><>}{<><>}>]]{(([{}<>][[]()])<<[][]>([]())>){<[(){}]>}}][(<< | ||||||
|  | ({(<{<({{{<(<<[][]}>[{[]<>}{[]{}}])><(<(<>[])([][])>{({}<>)}){{<[]()>(()<>)}}>}(<<<<{}{}>[(){}]>[[()[]]( | ||||||
|  | <[<((<{{{<<{({<>[]}){<[][]><[]<>>}}{[{[]()}[{}[]]][({}())]}>[{<[()<>]>[{()[]}((){})]}(({[]()} | ||||||
|  | [<({{[([([<{<[[]]<{}{}>>{([][])[()<>]]}[[<(){}><(){}>]]>((((<>{})[<>{}]){(()[])}){<[<>](()<>)>([[]< | ||||||
|  | <[[([[[(({{<(({}){[][]})[[<>[]]([]())]><[<{}{}><{}()>]>}<(<{<><>}{()[]}>([{}()]((){})))>}{{([{{}}{<>[ | ||||||
|  | ([[{<<<<(({(<([]{})<{}[]>>)}([[<{}()>)([[]{}]<<>()>)]{{{(){}}}[<()<>>{<><>}]}))<[{{<()()><{}{}>}}][{{<(){}>< | ||||||
|  | {[{{(<{{{<([[{{}()}{{}{}}]]({<[][]>(<>[])}[[[][]]{<>[]}]))>}}}>)}}{<[<{[{[<[({[]}<[]{}>){(<>{})(<><>) | ||||||
|  | <{{([<{{{{<{{{()[]}{[]()}}{(())((){})}}{{(()[])[{}<>]}(<()<>>([][]))}>}}<[{({<()[]>({}[])} | ||||||
|  | {(<([(([{{{({[()()]<()>}[([]()}<<><>>])[{[<>[]]<<>>}{{[]<>}(<>())}]}}<{{[[{}[]]]}(<<<>()>>({[]()}<<>[]>) | ||||||
|  | <[{{{[{(<<(({<<>[]>{[]}}<{{}[]}<{}[]>>)[[([]())(<><>)][[[]()]([]{})]])[<{(()[])<()>}>([{{}{}}]{<(){}>(()()) | ||||||
|  | [(<[({<{[[{<{[{}[]]{[]<>}}[<()<>>[[][]]]>(<[{}<>]({}())><[{}{}]{()()}>)}((<<<>[]>(<>{})>[(<>())[{}{ | ||||||
|  | [[<{{<<[<<<<({{}<>}<{}[]>)((()[])[[]<>])><([<>[]]([]<>)){(<><>)}>>[({{()}{<>[]}}[([][])[{}[]]]){([{}()][<>{ | ||||||
|  | {{{<({[([({<[[{}<>](()())]([<><>]({}[]))>}(({<<>()>[[]]}[<()>{<>{}}])))]<{({{(()())<<>>}}[({[]{}}[ | ||||||
|  | (<<{(({{(<{{[<{}{}><<>()>]{{()[]}<<>{}>}}(<<{}<>><()>>{<()<>>([]{})})}<[{([]<>)<<>[]>}[<{}()><{}>]]>> | ||||||
|  | {<[[<{[{(<{<<(<>)<{}{}>>>[<<{}()>({}{})>]}<<[({}[]](()[])]{<[]<>>(())}>{<{()<>}({}<>)>{<() | ||||||
|  | [{((<<{<{[{[([()<>](()())){(<>())}}([[()<>][{}()]][({}[]){[]()}])}([<[()<>]([][])>[[[]{}]{()[ | ||||||
|  | [<[<[<<[([<{[{()<>}({}())]<{{}<>}([]())>}(<<<>{}>[{}{}]>[[[]()]])>]<({({(){}}<[]{}>)([()<>](()))}[({[ | ||||||
|  | [<[<[(((<(({{([][])}}<[[[][]]{(){}}>(<()[]>[[][]])>){([(()<>)<()()>]<[{}()]([]())>)<<{<>()}>([<>[]]{[] | ||||||
|  | {{<{<[{[{[(<([{}()]{[]<>})({<>})>(({{}{}}([]{}))))<[[({}{})<()[]>][{[]{}}{(){}}]]{([()<>])(<()[]><<>()>)}>]} | ||||||
|  | ((({([{(<{<[[{{}<>}<{}()>]{([]<>)[{}[]]}]>(<([[]<>])((<>[]))>{<{[][]}(<>())>{{{}()}(()[])}})}>{[ | ||||||
|  | <{(([(<<<(<({{[]<>}{<>[]}}{[[]{}][[]{}]})>[<<[{}<>](()<>)><(()<>)[{}()]>>(<{<>[]]({}[])>{(<>)<[]{}>})]){[<<[( | ||||||
|  | <{<{{<<<{((<([()()])(<(){}>{<>()})>)<([([]()){{}[]}]{{{}}<{}[]>})(<{()<>)>[<{}()>])>)(<(([()()]( | ||||||
|  | (<[{(<(<[<<[((<>[]){<>[]})<(<>[]]({}{})>][[{[]{}}{()[]}]]>>[<{(<[][]>{{}{}})}<([()[]]<[]<>>)[{<><>}<{}{ | ||||||
|  | ({{<<({<<[<[<(<><>)<()<>>><[()<>]([][])>]>[{{<()<>><()<>>}}(<{{}()}><{{}{}}<{}{}>>)]]([[[{[ | ||||||
|  | ([[<<([[<([{([()[]](<>[]))<<<>[])({}[])>}[{[[][]]}]])[<[[({}{})<{}<>>]]([{{}<>}({}[])](([]())({}{})))>[[ | ||||||
|  | <{<(<{({[({[[[()[]]{{}[]}][[<>[]>{<>[]}]]})]<{[{<[{}[]]{<>()}><([]<>){<>{}}>}{(<(){}>{<>{}}) | ||||||
|  | <<<[<{(<{(({({<><>}{{}<>}){([][])([][])}}[<{(){}}<<>{}>>{([]<>)[()[]]}>)<{{{<><>}{<>{}}}{( | ||||||
|  | <[<<(({<<[<([<{}()><<><>]])<[[{}<>][<>{}]]<[{}<>](<>{})>>>](<(<[[]<>][(){}]>(<<>()>{<>})){[({}[] | ||||||
|  | <[[{<[([[[[{([()<>])<[[][]]{[]{}}>}](<[(<><>)]>({{(){}}<[]()>}))]]]{<({{(<<>()><(){}>){<[]<>>}}}[[ | ||||||
|  | <{[[[(({{[{(([{}()][<>()]))[([[]{}]<{}[]>)([<>[]]{{}{}})]}[{[(()[])]((<>{}){()()})}<<{(){}}[[]<> | ||||||
|  | (<((<[[{((({((()<>)){{{}<>}(<><>)}}<((()[]))>)([{(<>[])([]<>)}[([][])(<>[])]]<<<<>{}>>[([][])[{}<>]>>))([< | ||||||
|  | [(((<[<{[([{(<<>[]>((){}))[[[]()][<>{}]])]<({<{}>{[][]}}{{{}<>}[<>[]]})<<{{}()}{(){}}>({<>{}}{{}[] | ||||||
|  | {((<[{[<<<[{<[(){}]({}{})>}<[<[]{}>({}<>)][{(){}}<<>{}>)>][<[[{}]({}[])]>]><[{{{{}[]}}({[]{}}(<> | ||||||
|  | [[<[(((({[[[({<>{}}{{}()})[<(){}>{<>}]]{(<<>{}>(()<>))([[]<>]<()<>>)}](<([[]{}]<()()>)>{<[() | ||||||
|  | [<<<[{[<{[(({([][]){<>}}))(<{([]())[{}()]}[[{}[]]{[]<>}]><{(<>())<[][]>}[([][]){{}()}]>)]( | ||||||
|  | <(<{<<[([[<{[[<>()]<{}{}>][[(){}]<<><>>]}>]{(([[<>[]](<>{})>{<()[]><[][]>})[<[(){}]{[][]}><[<>()]([][] | ||||||
|  | <[([<<[{{[<<<{<>()}[<>()]>[<{}{}>[{}{}]]>[{[(){}]}([[]{}])]>]}}]>>{<([<(({({[][]}){([]()){{}{}}}} | ||||||
|  | [({{{((<{<{[<<{}{}>><<[]{}><<>{}>>][<{{}()}>]}[(<[[]]<<>[]>>[([]())<<>{}>]){<[{}[]]>((()<>)[[]{} | ||||||
|  | {[<[[(({([[<[(<>{})<<>{}>]{<()<>><{}[]>}>[[{{}<>}([]<>)][({}())([]())]]]])[[({{[[]<>][<>{}]}[[<> | ||||||
|  | (((<[[<<{{[[[([]{})<{}<>>]]{{[<>[]]<{}{}>}({<><>}{()()})}][[<<[]()>{<>[]}><(()())<()[]>>]{{([]( | ||||||
|  | [<{<[[[<<{[{<({})([][])>[{[]()}]}<[{{}()}[<><>]]>][((<[]{}><{}()>)(<<>()>))([<<>()>((){})>)]}{[({(<>())<( | ||||||
|  | {([<[{{{<[{[({<>()}(<>{})}[{()()}[<><>]]]}<{{{<>[]}[{}[]]}({[]()}[{}()])}<({()()}<<><>>){{{}{}} | ||||||
|  | {{<[[<({([{(([[]<>][{}<>])){{({}{})<<>()>}}}[[{[<><>][{}{}]}<{[][]}([]())>]<<[()[]]{()<>}>{<{}[]}(()())}>] | ||||||
|  | <({<[([{[[<{<{[]{}}[<>]>}>([(<()[]>[[]<>])<{<>[]}>]{[(()())[{}]][<{}<>><{}>]})]]([{{{([]{})[(){}]}[< | ||||||
|  | [<<[{[{{[[{[[[()<>][()[]]](({}<>)[()<>])]<<(()[])>([<>[]]{()<>})>}([<[{}{}]>{({}<>){[][]}}][{[<>[]][<>]}])]]} | ||||||
| @ -0,0 +1,123 @@ | |||||||
|  | package main | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"bufio" | ||||||
|  | 	"fmt" | ||||||
|  | 	"log" | ||||||
|  | 	"os" | ||||||
|  | 	"sort" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type Stack []string | ||||||
|  | 
 | ||||||
|  | func (s *Stack) push(i string) { | ||||||
|  | 	*s = append(*s, i) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *Stack) pop() string { | ||||||
|  | 	ret := s.peek() | ||||||
|  | 	*s = (*s)[:len(*s)-1] | ||||||
|  | 	return ret | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *Stack) peek() string { | ||||||
|  | 	return (*s)[len(*s)-1] | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func main() { | ||||||
|  | 	file, err := os.Open("input.txt") | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	defer file.Close() | ||||||
|  | 
 | ||||||
|  | 	scanner := bufio.NewScanner(file) | ||||||
|  | 	scanner.Split(bufio.ScanLines) | ||||||
|  | 	var errorTotal int | ||||||
|  | 	var completionTotals []int | ||||||
|  | 
 | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		errorScore, completionScore := solve(line) | ||||||
|  | 		errorTotal += errorScore | ||||||
|  | 		if completionScore > 0 { | ||||||
|  | 			completionTotals = append(completionTotals, completionScore) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	sort.Ints(completionTotals) | ||||||
|  | 	fmt.Println(errorTotal, completionTotals[len(completionTotals)/2]) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func solve(line string) (errorScore, completionScore int) { | ||||||
|  | 	blah := strings.Split(line, "") | ||||||
|  | 	var s Stack | ||||||
|  | 	for _, v := range blah { | ||||||
|  | 		if len(s) == 0 || isOpening(v) { | ||||||
|  | 			s.push(v) | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		if getClosing(s.peek()) != v { | ||||||
|  | 			//fmt.Println("Corruption: expected " + getClosing(s.peek()) + " but got " + v)
 | ||||||
|  | 			return getErrorScore(v), -1 | ||||||
|  | 		} else { | ||||||
|  | 			s.pop() | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	for len(s) > 0 { | ||||||
|  | 		completionScore *= 5 | ||||||
|  | 		completionScore += getCompletionScore(getClosing(s.pop())) | ||||||
|  | 	} | ||||||
|  | 	return | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func isOpening(test string) bool { | ||||||
|  | 	return test == "[" || test == "(" || test == "<" || test == "{" | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func getClosing(opening string) string { | ||||||
|  | 	switch opening { | ||||||
|  | 	case "[": | ||||||
|  | 		return "]" | ||||||
|  | 	case "(": | ||||||
|  | 		return ")" | ||||||
|  | 	case "<": | ||||||
|  | 		return ">" | ||||||
|  | 	case "{": | ||||||
|  | 		return "}" | ||||||
|  | 	default: | ||||||
|  | 		return "Unhandled chunk" | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func getErrorScore(closing string) int { | ||||||
|  | 	switch closing { | ||||||
|  | 	case ")": | ||||||
|  | 		return 3 | ||||||
|  | 	case "]": | ||||||
|  | 		return 57 | ||||||
|  | 	case "}": | ||||||
|  | 		return 1197 | ||||||
|  | 	case ">": | ||||||
|  | 		return 25137 | ||||||
|  | 	default: | ||||||
|  | 		fmt.Println("Unhandled error score for " + closing) | ||||||
|  | 		return -1 | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func getCompletionScore(closing string) int { | ||||||
|  | 	switch closing { | ||||||
|  | 	case ")": | ||||||
|  | 		return 1 | ||||||
|  | 	case "]": | ||||||
|  | 		return 2 | ||||||
|  | 	case "}": | ||||||
|  | 		return 3 | ||||||
|  | 	case ">": | ||||||
|  | 		return 4 | ||||||
|  | 	default: | ||||||
|  | 		fmt.Println("Unhandled completion score for " + closing) | ||||||
|  | 		return -1 | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -0,0 +1,10 @@ | |||||||
|  | 4525436417 | ||||||
|  | 1851242553 | ||||||
|  | 5421435521 | ||||||
|  | 8431325447 | ||||||
|  | 4517438332 | ||||||
|  | 3521262111 | ||||||
|  | 3331541734 | ||||||
|  | 4351836641 | ||||||
|  | 2753881442 | ||||||
|  | 7717616863 | ||||||
| @ -0,0 +1,44 @@ | |||||||
|  | const fs = require("fs") | ||||||
|  | 
 | ||||||
|  | const input = fs.readFileSync("input.txt", "utf-8", err => { | ||||||
|  |     err && console.error(err) | ||||||
|  | }).split("\n").filter(line => line).map(line => line.split("").map(digit => parseInt(digit))) | ||||||
|  | 
 | ||||||
|  | let flashed, flashCount = 0 | ||||||
|  | for (let i = 0;; i++){ | ||||||
|  |     flashed = Array(input.length).fill().map(arr => Array(input.length).fill(false)) | ||||||
|  |     for (let x = 0; x < input.length; x++){ | ||||||
|  |         for (let y = 0; y < input[x].length; y++){ | ||||||
|  |             incAndFlash(x, y) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     flashCount += flashed.flat().filter(flash => flash).length | ||||||
|  |     if (i === 99){ | ||||||
|  |         console.log(flashCount) | ||||||
|  |     } | ||||||
|  |     const all = input.flat() | ||||||
|  |     if (all.length === all.filter(num => num === 0).length){ | ||||||
|  |         console.log(i + 1) | ||||||
|  |         break | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function incAndFlash(x, y){ | ||||||
|  |     if (flashed[y][x]) | ||||||
|  |         return | ||||||
|  |     input[y][x]++ | ||||||
|  |     if (input[y][x] > 9){ | ||||||
|  |         input[y][x] = 0 | ||||||
|  |         flashed[y][x] = true | ||||||
|  |          | ||||||
|  |         for (let ny = y - 1; ny <= y + 1; ny++){ | ||||||
|  |             for (let nx = x - 1; nx <= x + 1; nx++){ | ||||||
|  |                 if (x === nx && y === ny) | ||||||
|  |                     continue | ||||||
|  |                 if (ny < 0 || nx < 0 || ny > input.length - 1 || nx > input[0].length - 1) | ||||||
|  |                     continue | ||||||
|  |                 incAndFlash(nx, ny) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue