diff --git a/2024/day2/part2.js b/2024/day2/part2.js new file mode 100644 index 0000000..fe321fb --- /dev/null +++ b/2024/day2/part2.js @@ -0,0 +1,31 @@ +#!/usr/bin/env node + +var fs = require('fs'); +var data = fs.readFileSync(process.argv[2],'utf8').split('\n').filter(i=>i).map(i=>i.split(' ').map(i=>parseInt(i))); + +var safety_count = 0; + +function listwithout(list,idx) { + return list.slice(0,idx).concat(list.slice(idx+1)); +} + +function isreportsafe(report,retry=true) { + var first = report.slice(0,-1); + var diffs = first.map((elem,idx)=>report[idx+1]-elem); + if(diffs[0]<0) { //Is negative + diffs = diffs.map(i=>-i); //Negate it + } + for(var idx=0;idx3) { + //return false; //We need to test removal + //If an improvement is made then it will be by removing one of the elements associated with this diff + if(retry) return isreportsafe(listwithout(report,idx-1),false) || isreportsafe(listwithout(report,idx),false) || isreportsafe(listwithout(report,idx+1),false); + return false; + } + } + return true; +} + +var safety_count = data.reduce((acc,report)=>acc+(isreportsafe(report)?1:0),0); + +console.log('Result:',safety_count); \ No newline at end of file