※ 引述《meteor009 (椰子)》之銘言:
: 已爬文
: 玩法:電腦猜數字(4位數,數字不重複)
: 使用者給幾A幾B
: 我的做法:
: 一開始把電腦可能的答案(0123~9876,去除中間重覆的數字)存到一個陣列裡
: ↑使用list<String>
: 第一次隨便Random一個出來,然後使用者給?A?B
: 接著就出現問題了...Orz
: 我不知道該怎麼讓電腦根據使用者給的?A?B去可能的答案陣列中剔除不符合的數字
: 然後再從剩餘的數字陣列中Random出一個數字作為答案
: 麻煩板上的高手大大救救我 T___T
: 先感謝大家了~
//數字候選資料在numList中
//當候選資料數量小於1時跳出
while(numList.count>1){
//電腦亂數挑的範圍(亂數範圍:0~numList.count)
targetNum = numList[(亂數)];
//使用者判斷AB的個數
inputA = (使用者輸入A);
inputB = (使用者輸入B);
//跑過所有numList中的數字
for(int i = 0 ; i <numList.count;i++)
{
//比對的數字
num = numList[i];
//計算num中的A數量
A = 0;
for(int j = 0 ; j <4; j++)
{
//比對同一位置的數字是否相等
if(num[j].equal(targetNum[j]))
{
A++;
}
}
//計算num中B的數量
for(int j = 0 ; j <4; j++)
{
//對於num中所有不同位置的數字去比對
for(int k=0 ; k < 4 ; k++)
{
//如果num中有數字等於targetNum[j] 則B+1 且跳出
if(num[k].equal(targetNum[j]))
{
B++;
break;
}
}
}//end inner for
//num不符合AB條件 從資料列中移除
if(!A.equal(inputA)||!B.equal(inputB))
{
numList.remove(i);
}
}// End outter for
}//End while
//numList最後剩下的數字就是了
if(numList.count.equal(1))
{
//numList[0]就是解
}
//List中無資料 錯誤
if(numList.count.equal(0))
{
//使用者給錯資訊
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.53.147
※ 編輯: BETNPP 來自: 140.115.53.147 (12/14 16:17)