填數字游戲解題機


填數字游戲解題機

  它,是填數字游戲解題機,是本人設計和制作的一種可以解決所有填數字游戲的工具軟件。

  許多題目/游戲都可以化成填數字游戲。比如幻方、數獨、八皇后問題。他們的特點就是拿着一些卡片往一張地圖上面填,填了之后就不能移動了。填錯之后的移動卡片,不屬於這里講的移動。另一類帶有移動的或者吃子的就不屬於填數字游戲,比如華容道(一款游戲)有移動,圍棋有吃子,象棋既有移動也有吃子。

  有了它,直接或者少量地擴展代碼就能解決幾乎任意填數字游戲,而且由於它采用高級思維,所以解題速度不會很慢。

它的解題思路是什么?

  我們知道人腦的運算速度是很慢的,同時人腦也是很聰明的。比如說,像解數獨的時候,人會去尋求比較容易算的格子,然后再去推斷其他比較容易算的格子。還發明和應用了很多的法則,可以說這個思考過程是復雜而高級的。經過大自然的篩選和淘汰,證明這種思考方式是行之有效的。制作它的時候,希望模擬這種高級的思維方式。反之,越簡單的程序,運行的越快,但是就越接近於窮舉,在局部看起來非常快,在整體就顯得非常慢了。找一千以內的某個整數,計算機解起來很簡單,把1000個數挨個試一遍就行了,而且速度很快。但是人,就不是這么做。人會根據題目,對1000個數進行大量的排除,之后再對剩下的少量的數進行挨個的試。人的解題方式在解決答案的搜索空間更大的題目的時候,更顯示出優勢。所以,在解決簡單問題的時候,局部的快慢起了決定性的因素,而在解決復雜問題的時候整體的快慢才是關鍵所在。

  它的整體解決思路是在能應用高級思維的時候,都盡量的使用高級思維,實在不行了,再使用窮舉。也就是說窮舉是一種兜底的解決方式,是最后的選項。

  應用高級思維,主要在以下這幾點:

  1. 根據游戲的規則,先排除掉在當前格不可能正確的數字,而不是不管規則把所有能填的數字,都在當前格試一下。
  2. 盡早的發現當前已填的數字的不合理性,減少不必要的,后續的嘗試。比如填上當前的數字,都符合規則的要求,但是后面的某些格,哪怕填上最小的數字(根據某條游戲規則)都不夠小,那么也就證明當前填的這個數字是不對的。
  3. 每次填了一格之后,可以決定接下來填哪一格。並且在后續的搜索中,如果走進死胡同也能夠正確地返回,即是正確的回溯。

為什么要做它?

  玩編程十多年來,做過許多大大小小的算法題。已經有點膩了,沒新鮮感了。再去寫程序解決具體的題目顯得有些沒意思。要做就做能解決很多題目的程序。

  窮舉是最容易想到的通用的解決方案,他解決一些很簡單的問題還行,解決一些稍微復雜的問題,就會由於需要的計算時間太長而放棄,比如需要計算200年。而人腦,會用以自己的方式去解決這些復雜的問題,有時候效果比計算機好很多。所以這個是我自己反思人腦解決問題的一個過程,並把思考的結果寫成程序。它的最大的難點在於需要提取通用的思維方式,而不能引入解決具體問題的特有方式。

目前還有哪些沒做好的?

  • 系統還沒有集成“填了當前這一格后,選擇接下來填哪一格”這個機制。
  • 如何使用戶在使用現有類解決具體問題的時候,寫的代碼盡可能少。

如何下載和運行,如何修改代碼解決具體的問題,源碼下載,請到這里 https://gitee.com/billysir/puzzle-solving-machine


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM