27 lines
536 B
JavaScript
27 lines
536 B
JavaScript
|
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));
|
||
|
}
|