import fs from "node:fs"; /** * Load the input for a day's challenge * * @param {string|number} dayNumber The number of the day to load. A string for a file path can be provided here too. * @param {Function} parsingFunction A function to parse the input to a usable format * @param {boolean} literalPath If true, the {@link dayNumber} value should be used as a file path * * @returns {unknown} */ export function loadInput(dayNumber, parsingFunction, literalPath = false) { let filePath = literalPath ? dayNumber : `./inputs/day_${dayNumber}.input`; const data = fs.readFileSync(filePath, "utf8"); return typeof parsingFunction == "function" ? parsingFunction(data) : data; } /** * Comparator for sorting numbers into ascending order * * @param {number} a * @param {number} b * * @returns {-1|0|1} */ export function numericAscSort(a, b) { return a - b; } /** * Convert a string to an integer * * Does no checks to make sure the value is actually a number-like value * * @param {string} string * * @returns {number} */ export function strToInt(string) { return parseInt(string, 10); }