最近無聊上班太無聊
所以開始研究些有的沒的東西
於是想說研究看看電腦猜數字的程式的演算法是怎麼做到的
昨天大概想了一下還是不知道該如何下手
於是上Google找了一下...結果還真的是很多丫....
而且還人家還附上原始碼呢!!
參考網址:http://www.javaworld.com.tw/jute/post/view?bid=35&id=35423&sty=1&tpg=1&age=0
其實這方法的邏輯非常的簡單...
只分幾個步驟如下
Step1:
產生一個陣列存放所有可能的答案
如:{0123,0124,0125,.......,9875,9876}
Step2:
從所有可能中找出一個數來猜
如:第一個0123
Step3:
由玩家所填入的?A?B去判斷所有答案中符合這條件的所有的數
因為....由正解和你猜的數分析會是?A?B那也表示反推也是一樣的答案
然後將不符合條件的數設為-1
如:假設答案是5432
則0123得到0A2B
如果把0123當解答的話 你猜5432得到的也是0A2B
所以說你現在是反推的方式去想...只有和0123比較會得到0A2B的數才有可能是解答
也就是說其他不可能的數就可以刪除掉了
Step4:
重覆Step2~Step3就可以很快的得到答案了
所以一切就是這麼的簡單....
沒有留言:
張貼留言