shearphoto官方论坛_HTML5裁剪头像_JS截图插件

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1837|回复: 0

有100盏灯,从1~100编上号,开始时 所有的灯都是关着的。 ...

[复制链接]

31

主题

53

帖子

379

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
379
发表于 2015-9-25 02:33:47 | 显示全部楼层 |阅读模式
有100盏灯,从1~100编上号,开始时 所有的灯都是关着的。
第一次,把所有编号是1的倍数的灯的开关状态改变一次;
第二次,把所有编号是2的倍数的灯的开关状态改变一次;
第三次,把所有编号是 3的倍数的灯的开关状态改变一次;
依此类推,直到把所有编号是100的倍数的灯的开关状态改变一次。
问,此时所有开着的灯的编号。

明哥哥分别以PHP和JS进行解题

  1. <html>
  2. <head>
  3. <meta  charset=utf-8 />
  4. <title>100盏灯问题,PHP和JS进行解题</title>
  5. </head>
  6. <body>
  7. <h5>有100盏灯,从1~100编上号,开始时 所有的灯都是关着的。
  8.   第一次,把所有编号是1的倍数的灯的开关状态改变一次;
  9.   第二次,把所有编号是2的倍数的灯的开关状态改变一次;
  10.   第三次,把所有编号是 3的倍数的灯的开关状态改变一次;
  11.   依此类推,直到把所有编号是100的倍数的灯的开关状态改变一次。
  12.   问,此时所有开着的灯的编号。解题作者:明哥先生 QQ399195513</h5>
  13.   <br>
  14.   <!--PHP解题开始 解题作者:明哥先生 QQ399195513-->
  15.   <?php
  16.   /*PHP解题方法1*/
  17. class foo{
  18.   public $array2=array();
  19.   protected $Multiple=1;
  20.   public $lamp =array();
  21.   public  function test() {
  22.         return array_map(function($i) {return $this->run1($i);}, $this->array2);
  23.     }
  24. protected function run1($i){
  25.             $in_arr = array_search($i,$this->lamp);
  26.         $i %$this->Multiple === 0 and $in_arr?array_splice($this->lamp,$in_arr,1):array_push($this->lamp,$i);
  27.         if($i==100){
  28.      $this->Multiple++;
  29.     $this->Multiple < 101 &&  $this->test();
  30.                 }
  31.           }
  32.   }
  33. $foo= new foo;
  34. $foo->array2= range(1,100);
  35. $foo->test();
  36. print_r("PHP解题方法1结果:亮着的灯分别是:" .implode("、",$foo->lamp));
  37. echo "<br>";
  38.   
  39. /*PHP解题方法2*/


  40. function run(&$lamp, $Multiple) {
  41.            for ($i =1; $i < 101; $i++) {
  42.                     $in_arr = array_search($i,$lamp);
  43.                        $i % $Multiple === 0 and $in_arr?array_splice($lamp,$in_arr,1):array_push($lamp,$i);
  44.            }
  45.           $Multiple++;
  46.          return $Multiple < 101 ?run($lamp, $Multiple):"PHP解题方法2结果:亮着的灯分别是:" .implode("、",$lamp);
  47. }
  48. $array=array();
  49. print_r(run($array,1));


  50. ?>
  51.   <!--PHP解题结束-->
  52.   
  53.   
  54.   
  55.   <!--------------------帅气分界线--------上面PHP ------ 下面JS------------------------->
  56.   
  57.   
  58.   
  59.   
  60.   
  61.   
  62.   
  63.   
  64.   <!--JS解题开始 解题作者:明哥先生 QQ399195513-->
  65.   <script>
  66. /*有100盏灯,从1~100编上号,开始时 所有的灯都是关着的。
  67. 第一次,把所有编号是1的倍数的灯的开关状态改变一次;
  68. 第二次,把所有编号是2的倍数的灯的开关状态改变一次;
  69. 第三次,把所有编号是 3的倍数的灯的开关状态改变一次;
  70. 依此类推,直到把所有编号是100的倍数的灯的开关状态改变一次。
  71. 问,此时所有开着的灯的编号。  
  72. */

  73. /*兼容IE  6 7 8 9及所有浏览器*/
  74. [].indexOf || (Array.prototype.indexOf = function(a) {
  75.     for (var b = 0, c = this.length; c > b; b++) if (this[b] === a) return b;
  76.     return -1;
  77. });

  78. alert(function run(lamp, Multiple) {
  79.     var in_arr;
  80.     for (var i = 1; i < 101; i++) {
  81.         in_arr = lamp.indexOf(i);
  82.         i % Multiple === 0 && (in_arr === -1 ? lamp.push(i) :lamp.splice(in_arr, 1));
  83.     }
  84.     Multiple++;
  85.     return Multiple < 101 ? run(lamp, Multiple) :"JS解题结果:亮着的灯分别是:" + lamp.join("、");
  86. }(new Array(), 1));


  87.   </script>
  88.   <!--JS解题结束-->
  89. </h1>

  90. <!--JS解题结束-->
  91. </body>
  92. </html>
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

shearphoto新版本发布上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|shearphoto官方论坛_HTML5裁剪头像_JS截图插件  

GMT+8, 2017-11-20 13:55 , Processed in 0.083129 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表