首頁 >web前端 >js教程 >Javascript 實作的數獨解題演算法網頁實例_javascript技巧

Javascript 實作的數獨解題演算法網頁實例_javascript技巧

WBOY
WBOY原創
2016-05-16 17:19:561544瀏覽

1)當我們拿到一個題目時,首先會根據已經知道的條件,進行資料的初步整理和分析。

相當於填入9宮格里,所有的“確定項”,以及標記“可能選項”。

function refreshStat()

2)此後,思考會進入 猜測/驗證 的循環階段。

在9宮格中,可以對於「可能選項」進行嘗試,驗證是否違反現有條件。

每一個新的分支,最後的結果無非是兩種,答案/出錯。

複製碼 代碼如下:

                  var a=setOne ();
                    var b=refreshStat();
     則可跳脫循環
                        break;
}
                }

實際人腦思考的過程,且要先遍歷選項較少的分支。
所以,程式實作上也是 確定點/2叉分支/3叉分支/....

3)當所有的路徑搜尋下來,答案不是唯一的情況,是和數獨遊戲的宗旨相悖的。

以下部分是全部程式碼,為方便閱讀,偵錯資訊未刪除。

複製程式碼 程式碼如下:


 
  数独解题程序

  <script><br>   function keygo(evt,obj){<br>       key = window .event?evt.keyCode:evt.which;<br>       var next=obj.tabIndex ;<br>       var inputs=document.getElementsByTagName("input");<br>       if (key==38){//↑<br>           if (next -9>=0 ) {<br>               inputs[next-9].select()<br>           }<br>       }<br>       if (key==40){//↓<br>           if (next +9<81 ) {<BR> inputs[next+9].select()<BR> }<BR> }<BR> if (key==37){//←<BR> if (next -1>=0 ) {<br>               inputs[next-1].select()<br>           }<br>       }<br>       if (key==39){//→<br>           if(next+1<81)inputs[next+1].select();<BR> }<BR> }<BR> </script>
 





可以文本拷贝到下框中后点粘贴,从左到右从上往下的81个数字序列,未填为0,中间非数字字符将忽略