128 lines
3.3 KiB
TypeScript
128 lines
3.3 KiB
TypeScript
import { readLines } from "https://deno.land/std@0.177.1/io/read_lines.ts";
|
|
|
|
async function Part1() {
|
|
const file = await Deno.open("./Day10/input.txt");
|
|
const lines = readLines(file);
|
|
|
|
let error = 0;
|
|
|
|
for await (const line of lines) {
|
|
const brackets = []
|
|
for (const c of line.split("")) {
|
|
if (c == "(") {
|
|
brackets.push(1);
|
|
}
|
|
if (c == "[") {
|
|
brackets.push(2);
|
|
}
|
|
if (c == "{") {
|
|
brackets.push(3);
|
|
}
|
|
if (c == "<") {
|
|
brackets.push(4);
|
|
}
|
|
if (c == ")") {
|
|
const d = brackets.pop();
|
|
if (d != 1) {
|
|
error += 3;
|
|
break
|
|
}
|
|
}
|
|
if (c == "]") {
|
|
const d = brackets.pop();
|
|
if (d != 2) {
|
|
error += 57;
|
|
break
|
|
}
|
|
}
|
|
if (c == "}") {
|
|
const d = brackets.pop();
|
|
if (d != 3) {
|
|
error += 1197;
|
|
break
|
|
}
|
|
}
|
|
if (c == ">") {
|
|
const d = brackets.pop();
|
|
if (d != 4) {
|
|
error += 25137;
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return error
|
|
}
|
|
|
|
async function Part2() {
|
|
const file = await Deno.open("./Day10/input.txt");
|
|
const lines = readLines(file);
|
|
|
|
let scores: number[] = []
|
|
|
|
for await (const line of lines) {
|
|
let brackets = isCorrupted(line)
|
|
if (brackets[brackets.length - 1] == 5) {
|
|
continue
|
|
}
|
|
let score = 0
|
|
while (brackets.length != 0) {
|
|
score *= 5;
|
|
const b = brackets.pop()!
|
|
score += b;
|
|
}
|
|
scores.push(score)
|
|
}
|
|
scores.sort((a,b) => a -b)
|
|
return scores[(scores.length - 1) / 2]
|
|
}
|
|
|
|
console.log("Part1: " + await Part1());
|
|
console.log("Part2: " + await Part2())
|
|
|
|
function isCorrupted(line:string) {
|
|
const brackets = []
|
|
for (const c of line.split("")) {
|
|
if (c == "(") {
|
|
brackets.push(1);
|
|
}
|
|
if (c == "[") {
|
|
brackets.push(2);
|
|
}
|
|
if (c == "{") {
|
|
brackets.push(3);
|
|
}
|
|
if (c == "<") {
|
|
brackets.push(4);
|
|
}
|
|
if (c == ")") {
|
|
const d = brackets.pop();
|
|
if (d != 1) {
|
|
brackets.push(5)
|
|
return brackets
|
|
}
|
|
}
|
|
if (c == "]") {
|
|
const d = brackets.pop();
|
|
if (d != 2) {
|
|
brackets.push(5)
|
|
return brackets
|
|
}
|
|
}
|
|
if (c == "}") {
|
|
const d = brackets.pop();
|
|
if (d != 3) {
|
|
brackets.push(5)
|
|
return brackets
|
|
}
|
|
}
|
|
if (c == ">") {
|
|
const d = brackets.pop();
|
|
if (d != 4) {
|
|
brackets.push(5)
|
|
return brackets
|
|
}
|
|
}
|
|
}
|
|
return brackets
|
|
} |