Add 2023/Day 1/part2.js
This commit is contained in:
parent
8c18d7f74c
commit
5c691a5e60
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
var number_words=`
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
zero
|
||||
one
|
||||
two
|
||||
three
|
||||
four
|
||||
five
|
||||
six
|
||||
seven
|
||||
eight
|
||||
nine`;
|
||||
number_words = number_words.split('\n').filter(i=>i);
|
||||
|
||||
function allneedles(stack,needle) {
|
||||
var out=[];
|
||||
var sent=-1;
|
||||
while((sent=stack.indexOf(needle,sent+1))!=-1) {
|
||||
//console.log({stack,needle,sent});
|
||||
out.push(sent);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
function translatelineintopositions(line) {
|
||||
var out = [];
|
||||
number_words.forEach((needle,index)=>{
|
||||
var valueof = index%10;
|
||||
var allof = allneedles(line,needle);
|
||||
//console.log({line,needle,valueof,allof});
|
||||
out=out.concat(allof.map(pos=>({pos,valueof})));
|
||||
});
|
||||
out.sort((a,b)=>a.pos-b.pos);
|
||||
return out;
|
||||
}
|
||||
|
||||
function linetonumber(line) {
|
||||
var numbers = translatelineintopositions(line);
|
||||
var out =numbers[0].valueof*10+numbers[numbers.length-1].valueof;
|
||||
console.log({out});
|
||||
return out;
|
||||
}
|
||||
|
||||
var inputstring = require('fs').readFileSync('input.txt','utf8');
|
||||
var lines = inputstring.split('\n').filter(i=>i);
|
||||
var sum=0;
|
||||
for(var line of lines) {
|
||||
sum+=linetonumber(line);
|
||||
}
|
||||
console.log('Result:',sum);
|
Loading…
Reference in New Issue