個人項目之數獨遊戲

1.首先給出我的Github地址:https://github.com/noton-leslie/noton

2.時間安排:

計劃:預計耗時三天

任務需要:一週半

需求分析:一週

生成設計文檔:

設計複審:30分鐘

代碼規範:10分鐘

具體設計:10分鐘

具體編碼:兩週半

代碼複審:一週

測試:三天

報告:

測試報告:30分鐘

計算工作量:30分鐘

總結並提出改進計劃:一小時

3.

剛拿到這個題目的時候其實我是懵逼的,因爲我對數獨一點了解都沒有,甚至連他的基本規則都不懂。所以我在最初的半週一直在玩數獨的遊戲,希望能在玩遊戲之中找到規律,但是找了半周還是沒找到啥規律,被逼無奈之下只能找大佬們討論,希望大佬能給出解題意見,或者給我啓發一點思路。但是身邊的大佬都還沒做,我就講這個項目擱置在旁邊了。又過了一週才又開始設計代碼,終於有了思路開始寫,但是這個代碼對我這種程度的學生來說難度實在有點大,所以寫了大概兩週半,一直到清明假期結束都沒有寫完,然後寫完之後進行調試運行了放在Github,終於完成了此次項目。

4.經過大佬點撥,我的思路是這樣的:

   1)任意交換兩種數字得到的新數獨仍成立。
  2)九宮格的任意兩行或兩列交換結果仍是一個新數獨
  3)  綜上數字交換交換順序有8!種 ,共有4w多總換法,而九宮格內的交換一個九宮格有6中三個九宮格有6^3種。結合這兩個完全就夠100w種數獨的生成只需要一個數獨作爲模板
  4) 採用 回溯法進行暴力搜索,先將空行存下來進行暴力求解,就很簡單。

綜上:分爲生成數獨與解數獨兩部分,其中生成樹獨需要一個函數,解數獨寫了一個回溯函數和判斷當前是否正確的函數。還有解析命令行的部分,我在Github中找了一份開源的代碼貼了上去。

5、

生成數獨用了大佬的輸出掛,優化比較明顯。

然後解數獨部分因爲是用的暴力,感覺優化難度大,就沒搞了,如果開多線程可能優化效果很明顯。

6、沒啥好展示的,就回溯法暴力.......(瑟瑟發抖)

7、時間:前前後後一共花出去大概四周時間吧,不過現在提交好像也是零分了,其實也有點開心有點難受的,開心的是自己第一次做了項目還知道了Github怎麼用,難受的是付出了這麼多辛苦還是隻能得零分。

8、


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章