看到一个有意思的题目,我算完后发现无论随机多少次结果怎么都是一样的,是我算的有问题还是就是这么神奇(@--@)!

        /*房间里有100盏灯,编号1到100。
        有100个人,编号1到100。
        100个人轮流进入房间,每个人进去后,
        按下所有灯的编号能整除自身编号的灯的开关。
        比如编号为10的人进去,
        必须按一下10,20,30,……100的灯开关。
        房间里的灯开始全部是暗的,按一下为亮,
        再按一下又变暗,再按又变亮。
        问:100个人乱序进入房间后,有哪些灯是亮的?*/

        //一百盏灯
        let deng = Object.keys(Array.apply(null, {length:100})).map(res=>{return +res+1;})
        //一百个人
        let ren = Object.keys(Array.apply(null, {length:100})).map(res=>{return +res+1;})
        //随机打乱人的序列
        ren.sort(() => Math.random() - 0.5);    
        console.log(deng)
        console.log(ren)
        
                //亮着的灯
        let isDeng = []

        ren.filter(r =>{
            deng.filter(res=>{
                if(res % r === 0){
                    if(isDeng.indexOf(res) === -1){
                        //不存在,亮灯
                        isDeng.push(res)
                    }else{
                        //不存,熄灯
                        let index = isDeng.findIndex(i=>{return i === res})
                        isDeng.splice(index , 1);
                    }
                }
            })
        })
        //给亮着的灯升序排列
        isDeng.sort(function(a, b) {
          return a - b;
        });
        console.log(isDeng)