day 6 complete!
This commit is contained in:
49
day06/js/day06a.js
Normal file
49
day06/js/day06a.js
Normal file
@@ -0,0 +1,49 @@
|
||||
import { promises as fsPromises } from "node:fs";
|
||||
|
||||
async function asyncReadFile(filename) {
|
||||
try {
|
||||
const contents = await fsPromises.readFile(filename, "utf-8");
|
||||
|
||||
const arr = contents.split(/\r?\n/);
|
||||
|
||||
return arr;
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
const data = `
|
||||
123 328 51 64
|
||||
45 64 387 23
|
||||
6 98 215 314
|
||||
* + * +
|
||||
`.trim()
|
||||
.split("\n");
|
||||
*/
|
||||
|
||||
const data = await asyncReadFile("../input.txt");
|
||||
|
||||
const parsedData = data.map((val) => val.trim().split(/\s+/));
|
||||
const rowCount = parsedData.length,
|
||||
colCount = rowCount ? parsedData[0].length : 0;
|
||||
const numRegex = /\d+/;
|
||||
|
||||
let total = 0;
|
||||
|
||||
for (let c = 0; c < colCount; c++) {
|
||||
let operands = [];
|
||||
let result = 0;
|
||||
for (let r = 0; r < rowCount; r++) {
|
||||
const val = parsedData[r][c];
|
||||
if (numRegex.test(val)) operands.push(val * 1);
|
||||
else if (val === "+")
|
||||
result = operands.reduce((acc, curr) => acc + curr, 0);
|
||||
else if (val === "*")
|
||||
result = operands.reduce((acc, curr) => acc * curr, 1);
|
||||
}
|
||||
console.log(`> result: ${result}`);
|
||||
total += result;
|
||||
}
|
||||
|
||||
console.log(`>> total: ${total}`);
|
||||
Reference in New Issue
Block a user