※ 引述《meteor009 (椰子)》之銘言:
: 已爬文
: 玩法:電腦猜數字(4位數,數字不重複)
: 使用者給幾A幾B
: 我的做法:
: 一開始把電腦可能的答案(0123~9876,去除中間重覆的數字)存到一個陣列裡
: ↑使用list<String>
: 第一次隨便Random一個出來,然後使用者給?A?B
: 接著就出現問題了...Orz
: 我不知道該怎麼讓電腦根據使用者給的?A?B去可能的答案陣列中剔除不符合的數字
: 然後再從剩餘的數字陣列中Random出一個數字作為答案
: 麻煩板上的高手大大救救我 T___T
: 先感謝大家了~
如果要先產生10*9*8*7個判斷資料,卻在其中只用到幾筆,很浪費啊.
電腦猜數字,過程為:
guess.1: 1234 -> match.1: 1A1B
guess.2: 5678 -> match.2: 0A1B
......
guess.k: ooxx -> match.k: xxoo
我們用guess.i代表guess.1到guess.k的任何一項,相對它,有一個match.i.
電腦該拋出哪個guess.(k+1)呢?
電腦拋出guess.(k+1),是希望guess.(k+1)得到4A0B.
如果guess.(k+1)是4A0B,則guess.i與guess.(k+1)比較,必定得到match.i!
所以,
規則一: 電腦亂數取四個數字,檢查這一組與每個guess.i比較,都會得到match.i.
如果通過檢查,這四個數字就可以拋出去做guess.(k+1).
是簡單的方法.
另外有一條規則:
規則二: 如果match.i是0A0B,則將guess.i四個數字排除在可參與亂數的數字之外.
這樣做會比較容易. 祝好運.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.208.90
※ 編輯: yauhh 來自: 218.160.208.90 (12/15 19:37)
推
12/16 02:03, , 1F
12/16 02:03, 1F
→
12/16 02:03, , 2F
12/16 02:03, 2F
→
12/16 02:03, , 3F
12/16 02:03, 3F
→
12/16 02:04, , 4F
12/16 02:04, 4F
→
12/16 02:04, , 5F
12/16 02:04, 5F
→
12/16 02:05, , 6F
12/16 02:05, 6F
→
12/16 02:05, , 7F
12/16 02:05, 7F
→
12/16 02:48, , 8F
12/16 02:48, 8F
→
12/16 02:50, , 9F
12/16 02:50, 9F
→
12/16 02:51, , 10F
12/16 02:51, 10F
→
12/16 03:43, , 11F
12/16 03:43, 11F
推
12/16 09:44, , 12F
12/16 09:44, 12F
→
12/16 09:45, , 13F
12/16 09:45, 13F
推
12/16 09:46, , 14F
12/16 09:46, 14F
→
12/16 09:46, , 15F
12/16 09:46, 15F
→
12/16 09:46, , 16F
12/16 09:46, 16F
→
12/16 09:47, , 17F
12/16 09:47, 17F
→
12/16 09:48, , 18F
12/16 09:48, 18F
→
12/16 09:49, , 19F
12/16 09:49, 19F
→
12/16 09:50, , 20F
12/16 09:50, 20F
推
12/16 23:37, , 21F
12/16 23:37, 21F
討論串 (同標題文章)