I also did mine in JS but I decided to use the readline interface to read each line individually and spend less memory by not loading the entire file in the memory at once.
I haven't trying using for await (... of ...) with the readline interface. Maybe I'll try that next. If anyone would like to try it please post it here.
Here are my solutions:
My solution in JavaScript / Node 11, using the readline interface:
const{readFile}=require('./readLines');(async()=>{constlines=awaitreadFile('01-input.txt');constfrequency=lines.reduce((frequency,line)=>frequency+Number(line),0);console.log(`The final frequency is ${frequency}`);})();
01b.js
const{readFile}=require('./readLines');(async()=>{constlines=awaitreadFile('01-input.txt');constfrequencySet=newSet();letfrequency=0;letdidAFrequencyReachTwice=false;while(!didAFrequencyReachTwice){for(letlineoflines){frequency+=Number(line);if(frequencySet.has(frequency)){didAFrequencyReachTwice=true;break;}else{frequencySet.add(frequency);}}}console.log(`The first frequency reached twice is ${frequency}`);})();
Once it is released, my streamToFrequencies generator won't be needed.
Also, createReadStream only reads the file in 256 byte chunks at a time (or whatever you set the highwatermark to be, it does not read the entire file into memory. readFile would, however.
I also did mine in JS but I decided to use the
readlineinterface to read each line individually and spend less memory by not loading the entire file in the memory at once.I haven't trying using
for await (... of ...)with thereadlineinterface. Maybe I'll try that next. If anyone would like to try it please post it here.Here are my solutions:
My solution in JavaScript / Node 11, using the
readlineinterface:readLines.js
01a.js
01b.js
Readline doesn't work with async iterators and
for awaityet, but it just landed in 11.x staging.Once it is released, my
streamToFrequenciesgenerator won't be needed.Also,
createReadStreamonly reads the file in 256 byte chunks at a time (or whatever you set thehighwatermarkto be, it does not read the entire file into memory.readFilewould, however.To read more about async iterators and generators and the
for awaitsyntax, check out 2ality.com/2018/04/async-iter-node...Thanks a bunch @mattmorgis !