diff --git a/day19/part2_3.js b/day19/part2_3.js new file mode 100644 index 0000000..22a0930 --- /dev/null +++ b/day19/part2_3.js @@ -0,0 +1,15 @@ +var num = 3012210; +var power = Math.log(num) / Math.log(3); +var rangeStart = Math.pow(3, Math.floor(power)); +var rangeEnd = Math.pow(3, Math.ceil(power)); +var rangeMid = (rangeStart + rangeEnd)/2; +var finalElf = 0; +console.log(rangeStart, rangeMid, rangeEnd); +if(num > rangeMid){ + finalElf += (rangeMid - rangeStart); + finalElf += (num - rangeMid) * 2; +} +else{ + finalElf += (num - rangeStart); +} +console.log(finalElf); diff --git a/day19/part2_pattern.js b/day19/part2_pattern.js new file mode 100644 index 0000000..5cf9f35 --- /dev/null +++ b/day19/part2_pattern.js @@ -0,0 +1,26 @@ +function getEnd(length){ + var elves = []; + for(var i = 0; i < length; i++){ + elves.push(i+1); + } + + var i = 0; + while(elves.length > 1){ + if(!(elves.length%1000)) console.log(elves.length) + var toRemove = Math.floor((i + (elves.length/2)))%(elves.length) + //console.log(i, elves[i], elves[toRemove], elves); + elves.splice(toRemove, 1); + if(toRemove > i){ + i = (i+1)%elves.length; + } + else{ + i = i%elves.length; + } + } + + return elves[0]; +} + +for(var i = 0; i < 500; i++){ + console.log(i, getEnd(i), getEnd(i) - getEnd(i-1)); +}