2013-03-24 57 views
0

我試圖創建一個二維陣列,並將四個「X」放在對角線上,並創建了一個雙循環來檢測和計算X的數量,它可以工作,但它不能正確地完成工作。是它計算每行中X的數量,我的問題我怎麼才能讓它只計算對角線上的X?二維陣列對角線檢查循環

var creatematrix = function (nbRang, nbColumn) { 
     var result = Array(nbRang); 
     for (var i=0; i<nbRang; i++) { 
      result[i] = Array(nbColumn); 
     } 
     return result; 
    }; 

    var m = creatematrix(6, 7); 

例如,如果我這樣做

 m[4][1] = "X"; 
     m[3][2] = "X"; 
     m[2][3] = "X"; 
     m[1][4] = "X"; 

     m[5][3] = "O"; 
     m[3][3] = "O"; 
     m[4][3] = "O"; 
     m[2][4] = "O"; 

或這樣做的結果是一樣的

m[1][1] = "X"; 
    m[2][1] = "X"; 
    m[3][1] = "X"; 
    m[4][1] = "X"; 



    m[5][3] = "O"; 
    m[3][3] = "O"; 
    m[4][3] = "O"; 
    m[2][4] = "O"; 

這裏是我有:

var sumX = 0; 
    for(var k = 5; k >= 0 ; k--){ 
     if(sumX == 4){ 
      alert("player 1 won"); 
     } 
     for(var i = 0 ; i<= 6; i++){ 
      if(m[k][i]== "X"){ 
       sumX += 1; 
       break; 
      } 
      if(m[k][i]== "O"){ 
       sumX = 0;   
      } 
     } 
    }  

回答

0
function getCount(m){ 
    var count =0; 
    for(var i=0; i<m.length; i++) 
    { 
     if(m[i][m.length-i-1] === "X") 
     { 
     count++; 
     } 
    } 

    return count; 
} 

這將只是沿着對角線,並檢查每個值。

你也可以做一個較短的(但不讀)版本

function getCount(m){ 
    return m.reduce(function(prev,current,index,arr){ 
     return prev + current[arr.length-index-1];},0); 
} 

JSFiddle

+0

它不工作:( – mike10101 2013-03-24 17:54:08

+0

@ nooby102030定義「不工作」是什麼不是做你期望? – 2013-03-24 17:54:40

+0

你的代碼沒有計算對角線上的X我試過了,它不會計算它們 – mike10101 2013-03-24 17:59:08