import * as fs from "fs"; import * as readline from "readline"; import * as util from "util"; export async function LoadInput(dayNumber: number): Promise<string[]> { const contents = []; const stream = fs.createReadStream(`./inputs/${dayNumber}.txt`, "utf8"); const rl = readline.createInterface({ input: stream, crlfDelay: Infinity, }); for await (const line of rl) { contents.push(line); } return contents; } /** * Inspect a variable in the console * * @param {any} value A value to inspect */ export function Inspect(value: any): void { console.log(util.inspect(value, { breakLength: Infinity, colors: true, depth: 256 })); } /** * Deep clone any input * * @param {any} value A value to clone * @returns A clone of the input */ export function DeepClone(value: any): any { return JSON.parse(JSON.stringify(value)); } /** * Extracts all numbers from a string * * If there were no numbers in the string, then an empty array is returned. * * Numbers in the output are in the order they appeared in in the input * * @param {string} str A string * @returns {number[]} An array of numbers */ export function ExtractNumbers(str: string): number[] { return str.split(/\D/).filter((n) => n.length).map((n) => Number(n)); }