2014年11月9日 星期日

Javascript - 猜數字輔助程式

(javascript, 技巧, 輔助程式, 程式碼)

練習 Android 的時候,用到猜數字的範例。為了猜快一點,所以用 Javascript 寫了一個輔助程式。



<script type="text/javascript">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
<!-- 參考 http://blog.xuite.net/funnyfamily/tonyjan/21045725-%EF%BD%9EC%E8%AA%9E%E8%A8%80%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%EF%BD%9E%E9%9B%BB%E8%85%A6%E7%8C%9C%E6%95%B8%E5%AD%97%EF%BD%9E -->
<script type="text/javascript">
var arrAnswers = new Array();

for ( var i = 1234; i < 9876; i++) {
        n1 = i.toString().substring(0, 1); //千位數
        n2 = i.toString().substring(1, 2); //百位數
        n3 = i.toString().substring(2, 3); //十位數
        n4 = i.toString().substring(3, 4); //個數位
        
        if (n1 == n2 || n1 == n3 || n1 == n4 || n2 == n3 || n2 == n4 || n3 == n4) { //去除重複
            continue;
        }
        
        if(n1==0 || n2==0 || n3==0 || n4 ==0){ //去除0
            continue;
        }
        
        //arrAnswers第一維的key值是4位數的數字,第二維則是把4位數再拆成4個個別的數字
        arrAnswers[i] = new Array(4);
        arrAnswers[i][0] = n1; //千位數
        arrAnswers[i][1] = n2; //百位數
        arrAnswers[i][2] = n3; //十位數
        arrAnswers[i][3] = n4; //個數位
}

function guess(obj){
    var id = obj.getAttribute("id");
    var r = id.substr(4,1); //猜了幾次
    
    for(n = 1; n <= r; n++){
        var objInputN = document.getElementById("inputN"+n);
        var objInputA = document.getElementById("inputA"+n);
        var objInputB = document.getElementById("inputB"+n);
        
        //檢查是否輸入數字
        if(objInputN.value.length==0 || objInputA.value.length==0){
            alert("請依序輸入每一組的數字、幾A幾B");
            return;
        }
        
        var arrInput = new Array(4);
        arrInput[0] = objInputN.value.substring(0, 1); //千位數
        arrInput[1] = objInputN.value.substring(1, 2); //百位數
        arrInput[2] = objInputN.value.substring(2, 3); //十位數
        arrInput[3] = objInputN.value.substring(3, 4); //個數位

        for(key in arrAnswers){ //檢查所有可能數字組合
            var countA = countB = 0;
            for(i = 0;i < 4;i++){  //當前檢查的數字
                for(j = 0;j < 4;j++){ //輸入的數字
                    if(arrAnswers[key][i]==arrInput[j]){
                        if(i == j) countA++;
                        else countB++; 
                    }
                }
            }

            if( !(countA == objInputA.value && countB == objInputB.value)){ //移除不符合的數字
                delete arrAnswers[key];
            }
        }
    }
    
    var str = "";
    var c = 0;
    for(key in arrAnswers){
        if(arrAnswers[key]=='undefined'){
            continue;
        }
        
        if(c < 51){
            str += key + "<BR>";
        }
        c++;
    }
    document.getElementById("divResult").innerHTML = "目前共有 " + c + "組 <BR>" + str;
}

    
</script>
</head>
<body>

    <table border="1" cellpadding="3">
        <tr>
            <td width="400">
            <form name="form1" method="post" action="">
            <table width="100%" border="0" cellpadding="3">
                <tr>
                    <td>
                        數字:
                        <label><input name="inputN1" type="text" id="inputN1" value="3724"></label> ,
                        <label><input name="inputA1" type="text" id="inputA1" value="0" size="3"> A </label>
                        <label><input name="inputB1" type="text" id="inputB1" value="0" size="3"> B </label> 
                        <label><input type="button" name="send1" id="send1" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input name="inputN2" type="text" id="inputN2" value="8196"></label> ,
                        <label><input name="inputA2" type="text" id="inputA2" value="0" size="3"> A </label>
                        <label><input name="inputB2" type="text" id="inputB2" value="0" size="3"> B </label> 
                        <label><input type="button" name="send2" id="send2" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input name="inputN3" type="text" id="inputN3"></label> ,
                        <label><input name="inputA3" type="text" id="inputA3" value="0" size="3"> A </label>
                        <label><input name="inputB3" type="text" id="inputB3" value="0" size="3"> B </label> 
                        <label><input type="button" name="send3" id="send3" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input name="inputN4" type="text" id="inputN4"></label> ,
                        <label><input name="inputA4" type="text" id="inputA4" value="0" size="3"> A </label>
                        <label><input name="inputB4" type="text" id="inputB4" value="0" size="3"> B </label> 
                        <label><input type="button" name="send4" id="send4" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input type="text" name="inputN5" id="inputN5"></label> ,
                        <label>
                            <input name="inputA5" type="text" id="inputA5" value="0" size="3"> 
                            A </label>
                        <label><input name="inputB5" type="text" id="inputB5" value="0" size="3"> B </label> 
                        <label><input type="button" name="send5" id="send5" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input type="text" name="inputN6" id="inputN6"></label> ,
                        <label><input name="inputA6" type="text" id="inputA6" value="0" size="3"> A </label>
                        <label><input name="inputB6" type="text" id="inputB6" value="0" size="3"> B </label> 
                        <label><input type="button" name="send6" id="send6" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input type="text" name="inputN7" id="inputN7"></label> ,
                        <label><input name="inputA7" type="text" id="inputA7" value="0" size="3"> A </label>
                        <label><input name="inputB7" type="text" id="inputB7" value="0" size="3"> B </label> 
                        <label><input type="button" name="send7" id="send7" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input type="text" name="inputN8" id="inputN8"></label> ,
                        <label><input name="inputA8" type="text" id="inputA8" value="0" size="3"> A </label>
                        <label><input name="inputB8" type="text" id="inputB8" value="0" size="3"> B </label> 
                        <label><input type="button" name="send8" id="send8" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input type="text" name="inputN9" id="inputN9"></label> ,
                        <label><input name="inputA9" type="text" id="inputA9" value="0" size="3"> A </label>
                        <label><input name="inputB9" type="text" id="inputB9" value="0" size="3"> B </label> 
                        <label><input type="button" name="send9" id="send9" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                <tr>
                    <td>
                        數字:
                        <label><input type="text" name="inputN10" id="inputN10"></label> ,
                        <label><input name="inputA10" type="text" id="inputA10" value="0" size="3"> A </label>
                        <label><input name="inputB10" type="text" id="inputB10" value="0" size="3"> B </label> 
                        <label><input type="button" name="send10" id="send10" value="送出" onClick="guess(this)"></label>
                    </td>
                    </tr>
                
                
                
            </table>
            </form>
            </td>
            <td width="200">最多顯示50組<BR><BR><div id="divResult" style="height:400px; overflow:auto"></div></td>
        </tr>
    </table>
</body>
</html>

.

沒有留言:

張貼留言