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 }