Re: [問題] 電腦猜數字

看板C_Sharp作者 (喲)時間14年前 (2009/12/15 19:29), 編輯推噓4(4017)
留言21則, 3人參與, 最新討論串4/4 (看更多)
※ 引述《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
原po的想法比較像是人工智慧的想法.
12/16 02:03, 1F

12/16 02:03, , 2F
簡單的猜數字解程式的想法,則是消去法
12/16 02:03, 2F

12/16 02:03, , 3F
可是消去法會有一個小問題..就算找出0a0b的四個數字
12/16 02:03, 3F

12/16 02:04, , 4F
剩下的6個數字,只能湊出2個0a0b..所以必須用case方式去解
12/16 02:04, 4F

12/16 02:04, , 5F
先找出4個0a0b數字,隨便抽兩個出來,和剩下數字做排列.
12/16 02:04, 5F

12/16 02:05, , 6F
找出另2個0a0b數字...那麼最後的4個數字就是0a4b...
12/16 02:05, 6F

12/16 02:05, , 7F
去做排列就是4a0b了
12/16 02:05, 7F

12/16 02:48, , 8F
那些額外的規則當然要自己想囉,不是什麼方法都包山包海
12/16 02:48, 8F

12/16 02:50, , 9F
可能是計分法,2A1B給一種分數,2A2B給一種分數,然後比哪個數
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
因為AI可以學習,但是這程式只到猜出為止..
12/16 09:46, 16F

12/16 09:47, , 17F
較,並且如果遇到0A0B要把亂數範圍縮小,而對付其他的?A?B就要
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
文章代碼(AID): #1B9tCTAW (C_Sharp)
文章代碼(AID): #1B9tCTAW (C_Sharp)