js累计积分技术分享算法
前端团队的技术分享2周⼀次,⼀次2⼈
为了确定下⼀次是谁来分享,团队中引⼊了分享积分制,具体规则为:
每个⼈都有⼀个积分,初始值是0。每次分享后所有⼈摇⼀轮骰⼦,点数作为积分累加到各⾃的积分中,骰⼦范围是1-12。积分最⾼的2个⼈将作为下⼀次的分享⼈。为了避免连续分享,某个⼈分享后他的积分会被清零且跳过本次的摇骰⼦环节。如果积分最⾼的⼈数超过2⼈,则相同分数的⼈继续摇骰⼦,直到决出2个积分最⾼的⼈。需要注意的是,这期间摇骰⼦的积分也同样累积。
请你编写代码模拟这个过程,数据结构和函数组织⾃由发挥
var originArr = [];
var resArr = [];sort函数 js
var first = true;
var chooseCount = 2;
function addScore(arr) {
for (let index = 0; index < arr.length; index++) {
arr[index].score += il(Math.random() * 12);
}
return arr;
}
function sortScore(a, b) {
return a.score - b.score
}
function statis(maxScore) {
var arr = [];
for (let index = originArr.length - resArr.length - 1; index >= 0; index--) {
if (maxScore <= originArr[index].score) {
arr.push(originArr[index]);
}
}
console.log('sortstatisArr', arr,resArr.length)
choose(arr);
}
function choose(sortArr) {
if (resArr.length >= chooseCount) {
return resArr;
} else {
// if (first) {
//  first = false;
//  sortArr = sortArr.sort(sortScore);
// } else {
sortArr = addScore(sortArr).sort(sortScore);
// }
console.log('sortArr', sortArr)
// if (chooseCount == 1) {
//  resArr.push(sortArr[sortArr.length - 1]);
//  return;
/
/ }
if (sortArr.length >= chooseCount) {
var tempRes = sortArr.slice(sortArr.length - chooseCount);
var len = tempRes.length;
console.log('tempRes', tempRes,tempRes[len - 2].score,tempRes[len - 1].score)
if (tempRes[len - 2].score == tempRes[len - 1].score) {
console.log('statis', tempRes[len - 2].score)
statis(tempRes[len - chooseCount].score);
} else {
resArr.push(tempRes[len - 1]);
if (resArr.length >= chooseCount) {
return resArr;
} else {
} else {
console.log('statis2', tempRes[len - chooseCount].score)
statis(tempRes[len - chooseCount].score);
}
}
} else {
console.log('statis3')
if (sortArr.length > 0) {
resArr.push(sortArr[sortArr.length - 1]);
console.log('statis4', resArr.length)
if (resArr.length >= chooseCount) {
return resArr;
} else {
choose(sortArr.slice(0, sortArr.length - 1));
}
} else {
return resArr;
}
}
}
}
function startChoose(total) {
for (let index = 0; index < total; index++) {
const element = { id: index, score: 0 };
originArr.push(element)
}
choose(originArr);
// originArr = [{ id: 1, score: 0 }, { id: 2, score: 0 }, { id: 3, score: 0 }, { id: 4, score: 0 }, { id: 5, score: 8 }, { id: 6, score: 8 }, { id: 7, score: 10 }, { id: 8, score: 10 }, { i  // choose(originArr);
console.log('resArr', resArr)
console.log('originArr', originArr)
}
function resetChoose() {
for (const iterator of resArr) {
iterator.score = 0;
}
resArr = [];
choose(originArr);
console.log('resArr', resArr)
console.log('originArr', originArr)
}
//第⼀次调⽤这个
startChoose(10)
/
/以后调⽤这个
resetChoose();