From 3ad67df3386023a4aaf323d3472feea0a7604c3d Mon Sep 17 00:00:00 2001 From: Bas Dado Date: Fri, 10 Dec 2021 20:04:38 +0100 Subject: [PATCH] [CLEANUP] Made the code a little bit cleaner --- functions/src/day10.ts | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/functions/src/day10.ts b/functions/src/day10.ts index 5f9881d..c7a587d 100644 --- a/functions/src/day10.ts +++ b/functions/src/day10.ts @@ -1,12 +1,9 @@ import Day from "./day"; import Utils from "./utils"; -const MISSING_CHARACTER_SCORES: {[key: string]: number} = { - ")": 1, - "]": 2, - "}": 3, - ">": 4, -} +const BRACKETS: {[key: string]: string} = { "(": ")", "[": "]", "{": "}", "<": ">" }; +const CORRUPT_CHARACTER_SCORES: {[key: string]: number} = { ")": 3, "]": 57, "}": 1197, ">": 25137 }; +const MISSING_CHARACTER_SCORES: {[key: string]: number} = { ")": 1, "]": 2, "}": 3, ">": 4 }; class Day10 implements Day { @@ -41,13 +38,7 @@ class Day10 implements Day { } getCorruptCharacterScore(char: string): number { - switch (char) { - case ")": return 3; - case "]": return 57; - case "}": return 1197; - case ">": return 25137; - default: throw Error(`Can't find points for character '${char}'`); - } + return CORRUPT_CHARACTER_SCORES[char]; } checkSyntax(line: string): { error: "corrupt", expected: string, got: string } | { error: "incomplete", missing: string } | { error: "none" } { @@ -55,18 +46,14 @@ class Day10 implements Day { const stack = []; for (const char of line) { - switch (char) { - case "(": stack.push(")"); break; - case "[": stack.push("]"); break; - case "{": stack.push("}"); break; - case "<": stack.push(">"); break; - default: { - const expected = stack[stack.length - 1]; - if (expected === char) { - stack.pop(); - } else { - return {error: "corrupt", expected, got: char}; - } + if (char in BRACKETS) { + stack.push(BRACKETS[char]); + } else { + const expected = stack[stack.length - 1]; + if (expected === char) { + stack.pop(); + } else { + return {error: "corrupt", expected, got: char}; } } }