作者GreatShot (我要拿Ph.D.!!!)
看板Programming
標題Re: ﹝請問﹞數字遊戲的程式怎麼寫?~ 急急急...
時間Sun Nov 5 19:32:42 2006
※ 引述《RETE.bbs@bbs.cs.tku.edu.tw (老鼠一隻)》之銘言:
: ※ 引述《ics.bbs@bbs.nsysu.edu.tw (單眼皮二號)》之銘言:
: > 如題...
: > 我想要寫一個數字程式...但是我不太會
: > 請各為大大幫幫忙.
: > 遊戲內容是猜4個數字,猜對是*A,反之是*B
: > 須用for迴圈去做,C語言
: > 很急著要..請各為大大幫幫忙了..謝謝!!
我好久好久好久以前修計算機程式的第一個作業就是這個猜數字@@
不同的是
我要讓電腦去猜人的答案 同時讓人猜電腦的答案 等於是競技
或是是讓電腦自己跟自己比賽這樣@@
讓電腦猜的部分
我的做法是
做一個直線型的linked list把所有答案裝進去
從1234到9876
每次在linked list中random一個四位數字
當對手(人)將結果送出 1A2B or 0B or 0A3B 時
就把linked list掃一遍將所有不符合此規則的數filter掉
形成一個更短的linked list
就這樣random下去
但是這樣worse case非常糟
畢竟是random猜 沒有策略可言
然而average case卻不錯
讓人猜的部分
這裡我就有作弊了
一樣也是用一個linked list將所有可能性做出來
但是並不預設一個原始答案
當對手(人)猜了一個數字時
去算從0A0B,0A1B,1A0B.....一直到4A之間所有能給的提示中
對linked list長度傷害最小的給他
總之就是盡量讓linked list的長度為最長
想辦法讓對手總是碰到worse case
也就是說到最後不得以的時後(linked list長度為1)
才把答案生給他 XD
那時候的做法蠻粗略的
就差不多是以上那樣
感覺很像有點小暴力..但...其實都是一下就算出來了..XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.110.47
推 costbook:很聰明的做法 61.217.132.188 11/05 19:40
→ meltice:所以你的程式一開始一定都是傳回0A0B 218.211.20.177 11/05 20:16
推 GreatShot:0A0B能刪的太多了 0A1B才狠 XD 220.133.110.47 11/05 21:13
推 ledia:傷害最小有可能會遇到 local maximum 140.112.30.56 11/06 00:03
→ ledia:不過 average 來說 這個程式已經夠壞的了 140.112.30.56 11/06 00:04
推 bill42362:哈 很像玩終極密碼心機板 XD 140.115.216.30 11/06 03:03
推 cplusplus:很多站的猜數字都這樣搞的吧~ 61.229.27.10 11/06 07:53
→ cplusplus:話說全部都存吃太多空間了 @@... 61.229.27.10 11/06 07:53