44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { open } from 'node:fs/promises';
|
|
const asso = {
|
|
"one": "1",
|
|
"two": "2",
|
|
"three": "3",
|
|
"four": "4",
|
|
"five": "5",
|
|
"six": "6",
|
|
"seven": "7",
|
|
"eight": "8",
|
|
"nine": "9"
|
|
}
|
|
const mapping = Object.entries(asso)
|
|
|
|
const file = await open('./inputs/1');
|
|
let sum = 0
|
|
for await (let origLine of file.readLines()) {
|
|
let numbers = ""
|
|
let line = origLine
|
|
let index = line.search(/(one|two|three|four|five|six|seven|eight|nine|[1-9])/)
|
|
if (isNaN(Number(line[index]))) {
|
|
mapping.forEach(([str, val]) => {
|
|
if (line.indexOf(str) != index) return
|
|
numbers += val
|
|
})
|
|
}else{
|
|
numbers += line[index]
|
|
}
|
|
|
|
let reversed = line.split('').reverse().join('')
|
|
index = reversed.search(/(eno|owt|eerht|ruof|evif|xis|neves|thgie|enin|[1-9])/)
|
|
if (isNaN(Number(reversed[index]))) {
|
|
mapping.forEach(([str, val]) => {
|
|
const strReversed = str.split('').reverse().join('')
|
|
if (reversed.indexOf(strReversed) != index) return
|
|
numbers += val
|
|
})
|
|
}else{
|
|
numbers += reversed[index]
|
|
}
|
|
console.log(numbers)
|
|
sum += Number(numbers)
|
|
}
|
|
console.log(sum) |