找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 4534|回复: 13

[幽默创意♡] 问答  逻辑趣味类-《九格宫》√已有答案√欢迎思路、拓展和应用√

[复制链接]
发表于 2008-1-4 12:38:52 | 显示全部楼层 |阅读模式
本来这个活动是作为本论坛的读书互助会义工圣诞活动的
但是由于种种原因没有能够举行

所以在这里玩一下
也希望能够长期举行

游戏说明:
在日本,人们不大做填字游戏,而是玩“数独”。每天在车厢和候车室里,都可以看到人们埋头于“数独”游戏的情景。 然而,尽管游戏以日文取名——粗译为“填数字拼图”,但游戏本身的发源地却不在日本。18世纪的瑞士数学家Euler发明了该类游戏较为简单的版本,如今的“数独”游戏普遍被认为是由此演变而来。
2004年11月12日,第一个“数独”游戏登上了《泰晤士报》的封面,恨快,作为该报每日内容的“数独”游戏就风靡英国。每天有成千上万的读者参与这个游戏,还有很多读者写信表达他们对游戏的喜爱,其中包括前Bletchley park情报处的破译员们,他们一道题都没有落下;还有电脑爱好者,他们特地设计了程序,专门来破解那些他们无法解开的游戏题。
当然,也有一些读者没有这么兴奋。在早餐时间,全家人争着抢报纸里“数独”游戏的版面,这样的事情已是见怪不怪。有些读者抱怨游戏题目太难,根本无法解开(题目的答案在第二天的报纸上登出);也有些读者同样怀着不满的情绪,不过他们是认为题目过于简单,只需几分钟就做出来了。有一位读者甚至写信给编辑,请求不要再刊登“数独”游戏题目了,但是很显然,他仍无法抵御游戏题目的魅力,每天乘地铁时免不了做一做,而且还是如往常一样坐过了站。
与填字游戏不同的是,玩“数独”游戏无需掌握任何一门特定的语言。事实上,从技术的角度来说,你甚至连数数都不用会。所有要做的就是将1到9这9个数字按一定秩序填入每行(从左至右)、每列(从上至下)、每个小九宫格(内有9个小方格),每个数字在每行、每列、每个小九宫格中只能出现一次。
技巧:(1)做题时一个好的方法就是从小九宫格入手,更好的方法是研究一组小九宫格,寻找出成对的数字,由此你可推出第三个。举个例子:如果左上角的小九宫格中有数字7,左下角的小九宫格中也有7,则不难推出左中的小九宫格中7的位置。同样也以用这样的方法解出水平位置的数字。如果存在两种可能性。记录下来,然后继续。
(2)多用“排除法”(也就是解数独的基本方法)
我还“发现”了一种方法,就是“取公共部分”,即把每一个空格都添上数字(是可能的),然后再根据重复部分来排除.(无表人觉得是最好用的)
(3)数独尽量不要使用“试错法”,即在一个空中“蒙”一个可能的数字,然后行不通再返回,这样不仅会显得你没有水平,而且还太浪费时间 .(万不得已,只好用一下。)


具体的游戏指导帮助可以参见:http://item.eachnet.com/prd/detail_prd.do?prdId=1189862290607107
(不是我写的,只是搜索到,只作参考)


今天试运行,题目是

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2008-1-4 13:02:25 | 显示全部楼层
数独比较好玩,但是玩起来超级费时间……
回复

使用道具 举报

发表于 2008-1-4 13:27:35 | 显示全部楼层

Re:实践  益智趣味类-《九格宫》

=300]615472398
739861425
842539617
371625984
564198273
298347156
126754839
953286741
487913562[/hide]
回复

使用道具 举报

发表于 2008-1-4 13:38:25 | 显示全部楼层
更多的题目:
http://www.sudoku.name/index-cn.php


]原始:
600000300
009800000
800500010
070200900
500000003
008100050
020004009
000006700
007000002

第二个结果:
652417398
719863524
843592617
476235981
591648273
238179456
325784169
184926735
967351842[/hide]
回复

使用道具 举报

 楼主| 发表于 2008-1-4 14:17:08 | 显示全部楼层
引用第3楼killl于2008-01-04 13:38发表的 :
更多的题目:
http://www.sudoku.name/index-cn.php


浏览此贴需要威望



我看到了,这个帖子似乎没有存在的必要了
回复

使用道具 举报

发表于 2008-1-4 15:11:19 | 显示全部楼层
引用第4楼capricorn_ye于2008-01-04 14:17发表的 :



我看到了,这个帖子似乎没有存在的必要了


介绍一下数独还是比较有趣的不知道有没有人喜欢自己算啊
回复

使用道具 举报

发表于 2008-1-4 15:14:02 | 显示全部楼层
这里有个js版本的解题器:
http://www.sudoku.name/sudoku-solver/cn
  1. <script language=javascript>
  2. function solve_puzzle()
  3. {
  4.   //check fields
  5.   var flag=0;
  6.   for (i=1;i<82;i++)
  7.   {
  8.    
  9.     if (document.getElementById(&#39;c&#39;+i).value>0)
  10.     {
  11.       flag=1;
  12.       //alert(flag);
  13.       break;
  14.     }
  15.   }
  16.   if (flag==0)//no numbers
  17.   {
  18.     alert("请输入数独迷题的起始数字");
  19.     return;
  20.   }
  21.   else//initial numbers in place submit
  22.   {
  23.     document.getElementById(&#39;solve&#39;).value=&#39;1&#39;;
  24.     form1.target=&#39;_top&#39;;
  25.     document.form1.action=&#39;&#39;;
  26.     document.form1.submit();
  27.   }
  28. }
  29. function change_puzzle()
  30. {
  31.   document.getElementById(&#39;change&#39;).value=&#39;1&#39;;
  32.   form1.target=&#39;_top&#39;;
  33.   document.form1.action=&#39;&#39;;
  34.   document.form1.submit();
  35. }
  36. //all cells read only
  37.   //place initial numbers&mark background cells
  38.   shown_arr1=new Array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  39. function repaint()
  40. {
  41.   //repaint cells
  42.   for (i=1;i<82;i++)//insert initial numbers repaint cells
  43.   {
  44.     //if ($_POST[&#39;c&#39;.$i]!="") echo $_POST[&#39;c&#39;.$i];
  45.     if (shown_arr1[i-1]>0)
  46.     {
  47.       document.getElementById(&#39;c&#39;+i).value=shown_arr1[i-1];
  48.       document.getElementById(&#39;cell&#39;+i).bgColor= &#39;#E5E5E5&#39;;
  49.     }
  50.   }
  51. }
  52.   //initializing vars
  53.   var col_counter=1;//1-9
  54.   var row_counter=1;//1-9
  55.   var region_counter=1;//1-9
  56.   var cell_counter=0;//0-82
  57.   var direction=1;//1||-1
  58.   puzzle_arr=new Array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  59.   initial_puzzle_arr=new Array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  60.   
  61. function check_grid()//check fields!!!
  62. {
  63.   empty=0;
  64.   legal=0;
  65.   //alert(&#39;yes&#39;);
  66.   //prepare shown cells array
  67.   //check rows
  68.   for (i=1;i<10;i++)
  69.   {
  70.     tmp_arr=new Array(0,0,0,0,0,0,0,0,0);
  71.     start=1+((i-1)*9);
  72.     finish=((i-1)*9)+10;
  73.     for (j=start;j<finish;j++)//check cell of row
  74.     {
  75.       tmp=document.getElementById(&#39;c&#39;+j).value;
  76.       if (tmp!="")//disrigard empty cells
  77.       {
  78.         //alert(tmp);
  79.         if (tmp_arr[tmp-1]==0) tmp_arr[tmp-1]=tmp;
  80.         else
  81.         {
  82.           //error
  83.           legal=1;
  84.           //mark duplicaned cells
  85.          
  86.           //return;// false;
  87.           break;
  88.         }
  89.       }
  90.       else empty=1;
  91.       //t+=1;
  92.     }
  93.     //t+=9;
  94.   }//end check rows
  95.   
  96.   //check columns
  97.   for (i=1;i<10;i++)
  98.   {
  99.     //i= column start
  100.     tmp_arr=new Array(0,0,0,0,0,0,0,0,0);
  101.     start=i;
  102.     finish=73+i;
  103.     for (j=start;j<finish;j+=9)//check cell of column
  104.     {
  105.       tmp=document.getElementById(&#39;c&#39;+j).value;
  106.       if (tmp!="")//disrigard empty cells
  107.       {
  108.         //alert(tmp);
  109.         if (tmp_arr[tmp-1]==0) tmp_arr[tmp-1]=tmp;
  110.         else
  111.         {
  112.           //error
  113.           legal=1;
  114.           //mark duplicaned cells
  115.          
  116.           //return;// false;
  117.           break;
  118.         }
  119.       }
  120.       else empty=1;
  121.     }
  122.   }//end column check
  123.   
  124.   //check regions
  125.   for (i=1;i<10;i++)
  126.   {
  127.     tmp_region=new Array(1,4,7,28,31,34,55,58,61);
  128.     tmp_arr=new Array(0,0,0,0,0,0,0,0,0);
  129.     start=tmp_region[i-1];
  130.     finish=tmp_region[i-1]+21;
  131.     for (j=start;j<finish;j+=9)//row
  132.     {
  133.       for (j1=j;j1<j+3;j1++)//column
  134.       {
  135.         tmp=document.getElementById(&#39;c&#39;+j1).value;
  136.         if (tmp!="")//disrigard empty cells
  137.         {
  138.           //alert(tmp);
  139.           if (tmp_arr[tmp-1]==0) tmp_arr[tmp-1]=tmp;
  140.           else
  141.           {
  142.             //error
  143.             legal=1;
  144.             //mark duplicaned cells
  145.    
  146.             
  147.             //return;// false;
  148.             break;
  149.           }
  150.         }
  151.         else empty=1;
  152.       }
  153.     }
  154.   }//end checking regions
  155.   
  156.   if (legal==1)
  157.   {
  158.     alert(&#39;这个数独迷题无法解答&#39;);
  159.     return false;
  160.   }
  161.   return true;
  162. }
  163. function solution()
  164. {
  165.   
  166.   if (document.getElementById("mark").checked==false)//the stop feature
  167.   {
  168.     if (initial_puzzle_arr[cell_counter]==0)
  169.     {
  170.       //if (puzzle_arr[cell_counter]<9)
  171.       while (puzzle_arr[cell_counter]<10)
  172.       {
  173.         puzzle_arr[cell_counter]+=1;
  174.         if (puzzle_arr[cell_counter]==10)
  175.         {
  176.           puzzle_arr[cell_counter]=0;
  177.           tmp=cell_counter+1;
  178.           document.getElementById(&#39;c&#39;+tmp).value=&#39;&#39;;
  179.           direction=-1;
  180.           break;
  181.         }
  182.         //alert(puzzle_arr[cell_counter]);
  183.         tmp=cell_counter+1;
  184.         document.getElementById(&#39;c&#39;+tmp).value=puzzle_arr[cell_counter];//shown puzzle
  185.         //check_legal
  186.         legal=0;
  187.         
  188.         //legal row
  189.         //alert(&#39;initial &#39;+legal);
  190.         tmp_start=((row_counter-1)*9);//+1;
  191.         tmp_end=((row_counter-1)*9)+9;//10;
  192.         for (i=tmp_start;i<tmp_end;i++)
  193.         {
  194.           if ((puzzle_arr[cell_counter]==puzzle_arr[i])&&(cell_counter!=i))
  195.           {
  196.             legal=1;
  197.             break;
  198.           }
  199.         }
  200.         //alert(&#39;row &#39;+legal);
  201.         
  202.         //legal col
  203.         if (legal==0)
  204.         {
  205.           for (i=col_counter;i<col_counter+73;i+=9)
  206.           {
  207.             if ((puzzle_arr[cell_counter]==puzzle_arr[i-1])&&(cell_counter!=i-1))
  208.             {
  209.               legal=1;
  210.               break;
  211.             }
  212.           }
  213.         }
  214.         //alert(&#39;col &#39;+legal);
  215.         //check regions
  216.         if (legal==0)
  217.         {
  218.           tmp_region=new Array(1,4,7,28,31,34,55,58,61);//cells numbers
  219.           i=region_counter;
  220.           start=tmp_region[i-1];
  221.           finish=tmp_region[i-1]+21;
  222.           //alert(start+&#39; &#39;+finish);
  223.           for (j=start;j<finish;j+=9)//row
  224.           {
  225.             for (j1=j;j1<j+3;j1++)//column
  226.             {
  227.               if ((puzzle_arr[cell_counter]==puzzle_arr[j1-1])&&(cell_counter!=j1-1))
  228.               {
  229.                 legal=1;
  230.                 break;
  231.                
  232.               }
  233.             }
  234.             if (legal==1) break;
  235.           }
  236.         }
  237.         
  238.         //alert(&#39;region &#39;+legal);
  239.         if (legal==0)
  240.         {
  241.           direction=1;
  242.           break;
  243.         }
  244.       }
  245.     }
  246.    
  247.     cell_counter+=direction;//next cell
  248.     cell_counter1=cell_counter+1;
  249.     //update counters
  250.     //row number
  251.     //cell_counter++;//for convinience
  252.     if ((cell_counter1>0)&&(cell_counter1<10)) row_counter=1;
  253.     else if ((cell_counter1>9)&&(cell_counter1<19)) row_counter=2;
  254.     else if ((cell_counter1>18)&&(cell_counter1<28)) row_counter=3;
  255.     else if ((cell_counter1>27)&&(cell_counter1<37)) row_counter=4;
  256.     else if ((cell_counter1>36)&&(cell_counter1<46)) row_counter=5;
  257.     else if ((cell_counter1>45)&&(cell_counter1<55)) row_counter=6;
  258.     else if ((cell_counter1>54)&&(cell_counter1<64)) row_counter=7;
  259.     else if ((cell_counter1>63)&&(cell_counter1<73)) row_counter=8;
  260.     else if ((cell_counter1>72)&&(cell_counter1<82)) row_counter=9;
  261.     //column number
  262.     col_counter=cell_counter1-(9*(row_counter-1));
  263.     //region number
  264.     region_counter=((Math.ceil(row_counter/3)-1)*3)+Math.ceil(col_counter/3);
  265.     //cell_counter--;//for convinience
  266.     if (cell_counter<0)
  267.     {
  268.       alert(&#39;这个数独迷题无法解答&#39;);
  269.       return;
  270.     }
  271.     else if (cell_counter>80)
  272.     {
  273.       alert(&#39;迷题已经成功解答&#39;);
  274.       return;
  275.     }
  276.   }//stop feature
  277.   if ((cell_counter1>0) || (cell_counter1<82)) window.setTimeout(solution, 5);
  278.   
  279. }
  280. function delete_marking(id)
  281. {
  282.   if (document.getElementById(&#39;c&#39;+id).value.length==0)
  283.   {
  284.     document.getElementById(&#39;cell&#39;+id).bgColor= &#39;#FFFFFF&#39;;
  285.    
  286.   }
  287.   //look for red flags, there can be only 2
  288. }
  289. function move(event,id)
  290. {
  291.   var key;
  292.   var keychar;
  293.   if (window.event) key = window.event.keyCode;
  294.   else if (e) key = e.which;
  295.   else return true;
  296.   //left=37
  297.   //right=39
  298.   //up=38
  299.   //down=40
  300.   if (key==37)//left
  301.   {
  302.     if ((id==1)||(id==10)||(id==19)||(id==28)||(id==37)||(id==46)||(id==55)||(id==64)||(id==73))
  303.     {
  304.       //don&#39;t move left
  305.     }
  306.     else
  307.     {
  308.       //delete after checking
  309.       //check how to act on readonly field
  310.       //move 1 cell left
  311.       document.getElementById(&#39;c&#39;+(id-1)).focus();
  312.       //document.getElementById(&#39;c&#39;+(id-1)).select();
  313.     }
  314.   }
  315.   else if (key==39)//right
  316.   {
  317.     if ((id==9)||(id==18)||(id==27)||(id==36)||(id==45)||(id==54)||(id==63)||(id==72)||(id==81))
  318.     {
  319.       //don&#39;t move left
  320.     }
  321.     else
  322.     {
  323.       //move 1 cell right
  324.       tmp_id=id;
  325.       tmp_id++;
  326.       //alert(tmp_id);
  327.       document.getElementById(&#39;c&#39;+tmp_id).focus();
  328.     }
  329.   }
  330.   else if (key==38)//up
  331.   {
  332.     if ((id==1)||(id==2)||(id==3)||(id==4)||(id==5)||(id==6)||(id==7)||(id==8)||(id==9))
  333.     {
  334.       //don&#39;t move left
  335.     }
  336.     else
  337.     {
  338.       //move 1 cell right
  339.       tmp_id=id;
  340.       tmp_id-=9;
  341.       //alert(tmp_id);
  342.       document.getElementById(&#39;c&#39;+tmp_id).focus();
  343.     }
  344.   }
  345.   else if (key==40)//down
  346.   {
  347.     if ((id==73)||(id==74)||(id==75)||(id==76)||(id==77)||(id==78)||(id==79)||(id==80)||(id==81))
  348.     {
  349.       //don&#39;t move left
  350.     }
  351.     else
  352.     {
  353.       //move 1 cell right
  354.       
  355.       //tmp_id=id;
  356.       tmp_id=parseInt(id);
  357.       tmp_id=tmp_id+9;
  358.       //alert(tmp_id);
  359.       document.getElementById(&#39;c&#39;+tmp_id).focus();
  360.     }
  361.   }
  362. }
  363. function valid_number(event,tmp_cell)
  364. {
  365.   var key;
  366.   var keychar;
  367.   
  368.   if (window.event) key = window.event.keyCode;
  369.   else if (e) key = e.which;
  370.   else return true;
  371.   //save_change(&#39;save_list&#39;);//when keypressed inside cell make update available
  372.   //alert("yeas "+key);
  373.   keychar = String.fromCharCode(key);
  374.   
  375.   if ((("123456789").indexOf(keychar) > -1))
  376.   {
  377.     document.getElementById(tmp_cell).bgColor= &#39;#E5E5E5&#39;;
  378.     return true;
  379.   }
  380.   else return false;
  381.   
  382. }
  383. </script>
复制代码
回复

使用道具 举报

发表于 2008-1-4 15:16:34 | 显示全部楼层
罚killl自己算和独立思考的思路解法!!!
回复

使用道具 举报

 楼主| 发表于 2008-1-4 16:03:41 | 显示全部楼层
引用第5楼killl于2008-01-04 15:11发表的 :



介绍一下数独还是比较有趣的 不知道有没有人喜欢自己算啊



是的
这样的题目空余时放松一下还是可以的
但是既然已经有了解算器
所以在这里开展就没必要了

随便问一下
killl刚才解第一题时
是自己算的,还是用解算器?
回复

使用道具 举报

发表于 2008-1-4 18:15:56 | 显示全部楼层
引用第7楼磁铁于2008-01-04 15:16发表的 :
罚killl自己算和独立思考的思路解法!!!

思路就是往上填写啊,慢慢填,慢慢.....

忽然发现搞不定,眉头一皱,搜了一下....


引用第8楼capricorn_ye于2008-01-04 16:03发表的 :

自己算的,还是用解算器?

.......


明人不做暗事,名人不做暗示,我这个只好手算,直到手酸,然后就找计算器算了下,不过不是这个
回复

使用道具 举报

 楼主| 发表于 2008-1-4 18:17:55 | 显示全部楼层
引用第9楼killl于2008-01-04 18:15发表的 :



名人不做暗示,我这个只好手算,直到手酸,然后就找计算器算了下,不过不是这个




的确有些烦,有时一时半会还做不出
回复

使用道具 举报

发表于 2008-1-4 18:34:29 | 显示全部楼层
引用第10楼capricorn_ye于2008-01-04 18:17发表的 :




的确有些烦,有时一时半会还做不出


或者数独是适合一个人在停电断网的时候,慢慢的玩

而面对多媒体板块这么多内容丰富、海阔天空的帖子实在静不下心玩

我太浮躁啊
回复

使用道具 举报

发表于 2008-1-4 21:38:08 | 显示全部楼层

这是北大附中附小网校数独专题里面有全面的数独解题技巧
其网址:http://www.pkuschool.com/change_net/2006subject/10sudoku/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2008-1-6 16:38:58 | 显示全部楼层
这也有一个http://www.sd9981.com/
里面有他的解算方法http://www.sd9981.com/sdjq_zgf.htm
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-9-29 23:40 , Processed in 0.179956 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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