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