63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import assert from 'node:assert';
|
|
import fs from 'node:fs';
|
|
|
|
|
|
const file = fs.readFileSync('./2025/inputs/6').toString();
|
|
let count = 0
|
|
class Operation {
|
|
public numbers: number[]
|
|
public operation?: string
|
|
constructor() {
|
|
this.numbers = []
|
|
}
|
|
}
|
|
const operations: Operation[] = []
|
|
const reversed: string[] = []
|
|
for (const line of file.split("\n")) {
|
|
reversed.push(line.split('').toReversed().join(""))
|
|
}
|
|
|
|
let currentOperation = new Operation()
|
|
operations.push(currentOperation)
|
|
reversed[0].split('').forEach((_, lineN) => {
|
|
let currentNumber: string[] = []
|
|
let s = ""
|
|
reversed.forEach((_, colN) => {
|
|
s = reversed[colN][lineN]
|
|
|
|
if (s == " ") {
|
|
return
|
|
}
|
|
|
|
const n = Number(s)
|
|
if (isNaN(n)) {
|
|
return
|
|
}
|
|
currentNumber.push(s)
|
|
})
|
|
|
|
if (currentNumber.length > 0) {
|
|
currentOperation.numbers.push(Number(currentNumber.join("")))
|
|
}
|
|
|
|
currentNumber = []
|
|
|
|
if (s == "*" || s == "+") {
|
|
currentOperation.operation = s
|
|
if (currentNumber.length > 0) {
|
|
currentOperation.numbers.push(Number(currentNumber.join("")))
|
|
}
|
|
|
|
currentNumber = []
|
|
currentOperation = new Operation()
|
|
operations.push(currentOperation)
|
|
}
|
|
|
|
})
|
|
|
|
operations.pop()
|
|
const result = operations.reduce((acc, curr) => {
|
|
return acc + eval(curr.numbers.join(curr.operation))
|
|
}, 0)
|
|
|
|
console.log(result) |