喊7的次数重排,逢7或者7的倍数喊’过‘
现给定一个长度为N的数组,存储了打乱顺序的每个人喊‘过’的次数,不提供最后喊到的值
例 输入:0 1 0 有3个人参与,有一个喊了‘过’ 输出:1 0 0 顺序为正确喊‘过’的次数
//含7的次数重排
/*
甲 乙 丙 丁
1 2 3 4
5 6 过 8
9 10 11 12
*/
have7(arr){
//打乱顺序的arr
//喊’过‘的次数
let num = arr.reduce(function(prev,cur){
return prev+cur
})
console.log(num,'num')
//最后喊的值N不提供,需要求 a对比标识
let N= 0,a=0;
for(let k=1;k<=num*7;k++){
if(k%7==0||String(k).indexOf('7')>-1){
a++;
if(a==num){
// N=k //k最小为此
N = num!==1? num*7 -1:k //最大为此
}
}
}
console.log(N,'N')
//统计每个人喊’过‘的数组
let peopleArr = arr.map((item,index)=>{
return {
people: index+'人',
time: []
}
})
console.log(peopleArr,'人数')
for(let i=1;i<=N;i++){
if(i%7==0||String(i).indexOf('7')>-1){
if(i%peopleArr.length==0){//数组最后一项
peopleArr[peopleArr.length-1].time.push(i)
}else{//
peopleArr[i%peopleArr.length -1].time.push(i)
}
}
}
let res = peopleArr.map(item => item.time.length)
console.log(peopleArr,'结果',res)
},