[CLEANUP] Made the code a little bit cleaner

This commit is contained in:
2021-12-10 20:04:38 +01:00
parent 168e55e5ef
commit 3ad67df338

View File

@@ -1,12 +1,9 @@
import Day from "./day"; import Day from "./day";
import Utils from "./utils"; import Utils from "./utils";
const MISSING_CHARACTER_SCORES: {[key: string]: number} = { const BRACKETS: {[key: string]: string} = { "(": ")", "[": "]", "{": "}", "<": ">" };
")": 1, const CORRUPT_CHARACTER_SCORES: {[key: string]: number} = { ")": 3, "]": 57, "}": 1197, ">": 25137 };
"]": 2, const MISSING_CHARACTER_SCORES: {[key: string]: number} = { ")": 1, "]": 2, "}": 3, ">": 4 };
"}": 3,
">": 4,
}
class Day10 implements Day { class Day10 implements Day {
@@ -41,13 +38,7 @@ class Day10 implements Day {
} }
getCorruptCharacterScore(char: string): number { getCorruptCharacterScore(char: string): number {
switch (char) { return CORRUPT_CHARACTER_SCORES[char];
case ")": return 3;
case "]": return 57;
case "}": return 1197;
case ">": return 25137;
default: throw Error(`Can't find points for character '${char}'`);
}
} }
checkSyntax(line: string): { error: "corrupt", expected: string, got: string } | { error: "incomplete", missing: string } | { error: "none" } { 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 = []; const stack = [];
for (const char of line) { for (const char of line) {
switch (char) { if (char in BRACKETS) {
case "(": stack.push(")"); break; stack.push(BRACKETS[char]);
case "[": stack.push("]"); break; } else {
case "{": stack.push("}"); break; const expected = stack[stack.length - 1];
case "<": stack.push(">"); break; if (expected === char) {
default: { stack.pop();
const expected = stack[stack.length - 1]; } else {
if (expected === char) { return {error: "corrupt", expected, got: char};
stack.pop();
} else {
return {error: "corrupt", expected, got: char};
}
} }
} }
} }