[CLEANUP] Made the code a little bit cleaner
This commit is contained in:
@@ -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};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user