100个小朋友围成圈,挪走第三个,直到最后一个
const list = {};
for (var i = 1; i <= 100; i += 1) {
list[i] = {
next: i === 100 ? 1 : i + 1, // 下一个
pre: i === 1 ? 100 : i - 1, // 上一个
value: i,
}
}
/**
* start 起点
* peopleList 人员集合
* count 数量
*/
function getPeople(start, peopleList, count) {
const data = JSON.parse(JSON.stringify(peopleList))
let leng = 100; // 剩余人数
let _count = 1; // 计数
let i = start; // 当前位置
while (leng !== 1) {
console.log(i, data[i])
const { next, pre } = data[i]; // 当前位置给下一个坐标
if (_count === count) {
data[pre].next = next;
data[next].pre = pre;
delete data[i];
_count = 1; // 计数归零
leng -= 1;
} else {
_count += 1;
}
i = next;
}
return i;
}
getPeople(1, list, 3)