2008年8月28日 星期四

電腦猜數字....

最近無聊上班太無聊
所以開始研究些有的沒的東西
於是想說研究看看電腦猜數字的程式的演算法是怎麼做到的
昨天大概想了一下還是不知道該如何下手
於是上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就可以很快的得到答案了


所以一切就是這麼的簡單....

沒有留言: