寫乙個數獨計算器

2022-01-11 23:53:14 字數 901 閱讀 9584

終於有點閒暇的時間,翻翻以前的**,突然看到有個好久以前寫的數獨計算器,一邊感嘆時光飛逝,一邊心中默默的噴自己:這些年都把自己糟蹋了。

不扯了,老習慣,**放在最後了,先上圖:

特點:1.視覺化計算方式,可以單步執行也可以,也可以全部快速計算

2.提供同值檢測功能,高亮提醒輸入的錯誤值

3.提供計算解釋日誌功能

4.隨**提供大量數獨資源,可以自定義選擇、載入,還可以隨機選擇

演算法說明:

先將所有的格仔進行如下定義,每個格仔叫square,每行叫row,每列叫column,乙個square所關聯的row,column,和那個九宮格都叫做unit,而這些row,column和unit的總和叫做peers。

對於空的格仔,每個格仔都會有123456789出現的情況,而已經選定的格仔,則值是唯一的。開始計算時,先選定有數字的格仔,然後在這個格仔所在的peers中刪除這個數字。比如在第一行的第乙個是1,第二個的可能性是123456789,那麼在第二個的可能性裡面刪除1,變成23456789。

遍歷每個值未定的square,找到格仔中可選值最少的返回,如果是可選數為1,則該格仔唯一被確定,並刪除peers中其他格仔中的該值得選項,

如果獲取的格仔可選數大於1,則選擇其中的乙個值,作為確定值,並把其他值連同座標,以及當前整個軟體中的每個格仔的情況進行記錄,然後推送到棧結構中,然後繼續執行。

如果返回格仔的可選值為空,這是因為剛才選擇的值有問題,所以需要進行一次出棧操作,提取剩餘值,並將軟體中每個格仔的值初始到記錄該值之前,繼續進行判斷,直到每個格仔中有符合規則的唯一的值時,既可以判定計算完成。

如果返回的格仔可選值為空,而棧中的值也為空,那麼就可以判斷該數獨無解。

用vb編了個數獨計算器

平時很喜歡玩數獨遊戲,每天只要信報上有數獨遊戲,那就不看別的了,專心致志玩一路。昨天突然想自己編乙個軟體來算吧,於是就有了這篇文章和乙個vb的數獨計算器。談思想吧,思想最重要 我用了最最笨的方法,就是每個空位都從1 9挨個填,出了問題再折回來重新填。所以這樣的想法一定要用到遞迴了,就是不斷呼叫自身來...

實現乙個計算器

一直以來,我都想寫一門語言,但無從下手。我找到了很多編譯原理的教程,但始終覺得內容晦澀,理解不了,所以先嘗試寫乙個簡單的,比如 計算器。網上有很多關於計算器的實現,但大多需要有編譯原理的基礎,對於我這種小白實在難以理解。我決定採用暴力模擬的方式,需要用正規表示式,但我不想自己實現,所以用js。計算器...

實現乙個計算器

一直以來,我都想寫一門語言,但無從下手。我找到了很多編譯原理的教程,但始終覺得內容晦澀,理解不了,所以先嘗試寫乙個簡單的,比如 計算器。網上有很多關於計算器的實現,但大多需要有編譯原理的基礎,對於我這種小白實在難以理解。我決定採用暴力模擬的方式,需要用正規表示式,但我不想自己實現,所以用js。計算器...