2015-11-04 68 views
0

我正在玩在线测试来改进我的编码逻辑,并且我有一个测试,我需要创建一个棋盘样本,基本上输入的是棋盘的行和列,然后生成被问到的输出,但我对我的解决方案并不满意,不知道是否可以在没有临时变量的情况下使用相同的输出,例如将输入值存储在数组中并使用某些数组函数在循环内部保持循环给我不同的值。这里是我的代码:没有使用Temp变量的解决方案

/* 
Sample output: 
0101010 
1010101 
0101010 
1010101 
*/ 
function chess(m, n) { //7,4 
    var zero = 0; 
    var um = 1; 
    var temp = 0; 

    for (var i = 0; i < n; i++) { 
     for (var r = 0; r < m; r++) { 

      if (temp === 1) { 
       document.write(um); 
       temp = 0; 
      } 
      else { 
       document.write(zero); 
       temp = 1; 
      } 
     } 
     document.write("<br>"); 
    } 
} 
chess(7, 4); 
+0

这是一个非常简单的模式。你所需要的只是'(i + j)%2 == 0? '0':'1''。无论如何,这对SO来说不是一个好问题,所以当它在几分钟内关闭时不要感到惊讶。下次尝试CodeReview :) – Luaan

+0

@Luaan'(i + j)%2'将会很好。你不需要三元操作符。 – Rajesh

+0

只是为了好玩,尽量不要写变量(不是m或n) –

回答

1

尝试

function chess(m,n){ //7,4 
 
var zero = 0; 
 
var um = 1; 
 
var temp = 0; 
 

 
    for(var i = 0; i < n; i++){ 
 

 
     for(var r = 0; r < m; r++){ 
 

 
      if((i+r)%2 === 1){ 
 
       document.write(um); 
 
      }else{ 
 
       document.write(zero); 
 
      }      
 
     } 
 
     document.write("<br>");  
 
    } 
 
} 
 
chess(7,4);

1

您可以直接计算和打印。您不需要将其存储在任何变量中。

function chess(m,n){ //7,4 
 
    for(var i = 0; i < n; i++){ 
 
     for(var r = 0; r < m; r++){ 
 
      document.write((i+r)%2); 
 
     } 
 
     document.write("<br>");  
 
    } 
 
} 
 
chess(7,4);

相关问题