• 约瑟夫环


    约瑟夫环故事背景:
    著名犹太历史学家 Josephus有过以下的故事:
    在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,
    39个犹太人决定宁愿死也不要被敌人抓到,
    于是决定了一个自杀方式,41个人排成一个圆圈,
    由第1个人开始报数,每报数到第3人该人就必须自杀,
    然后再由下一个重新报数,直到所有人都自杀身亡为止。
    然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,
    他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

    下面是我实现的 讨(s)巧(b)方式 没有什么结构

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4   <meta charset="UTF-8">
     5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6   <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7   <title>Document</title>
     8   <script>
     9     function killGame(total, step, sy){
    10       var arr = [];
    11       for(var i = 1; i <= total; i++){
    12           arr.push(i);
    13       }
    14 
    15       //从数组的哪个位置开始删除,( -1 从0开始)
    16       var indexDel = step-1;
    17       function fn(){
    18         //当数组里剩余=存活人数,结束递归;
    19         if(arr.length == sy){
    20           return;
    21         }
    22 
    23         //每次递归删除一人
    24         arr.splice(indexDel,1);
    25 
    26         //从新记录要从数组删除的位置
    27         indexDel=indexDel+step-1;
    28 
    29         //一组循环之后进行下一轮,当值超出数组范围计算
    30         if(indexDel > arr.length - 1){
    31           indexDel = indexDel%arr.length;
    32         }
    33         console.log(arr)
    34         fn()
    35       }
    36       fn();
    37 
    38       return arr;
    39     }
    40 
    41     //玩家总数,没隔几人自杀,留下人数
    42     console.log("结果:"+killGame(41,3,2))
    43 
    44 
    45 
    46     //脱离场景业务,当每隔人数自杀>=总人数时
    47     //  arr.splice(indexDel,1); 第一次执行为空[],进行下一轮取模计算
    48     var arr = [1,2]
    49     console.log(arr.splice(2,1)) // []
    50     console.log(arr) //[1,2]
    51   </script>
    52 </head>
    53 <body>
    54 
    55 </body>
    56 </html>
  • 相关阅读:
    1-6注册View Prism官网案例学习
    MVVM复习
    Prism常用类库翻译
    SqlHelper
    ADO.NET复习
    C#复习思维导图
    网络通信基础知识1
    网络通信
    Linux-线程同步之互斥锁
    linux-线程同步之信号量
  • 原文地址:https://www.cnblogs.com/make/p/6642044.html
Copyright © 2020-2023  润新知