使用两个循环构建一个包含奇数和偶数字符的 JavaScript 网格



这是我关于StackOverflow的第一个问题。

我必须建立gridGenerator(num).如果num3,它将看起来像这样:

#_#
_#_
#_#

如果num4,它将看起来像这样:

#_#_
_#_#
#_#_
_#_#

我能够解决奇数,但很难将其调整为偶数。

function gridGenerator(num) {
var grid = '';
var row = '';
for (var i = 0; i < num; i++) {
for (var j = 0; j < num; j++) {
if (row.length % 2) {
row += '_';
} else {
row += '#';
}
}
grid += row.slice(-num) + 'n';
}
return grid;
}
console.log(gridGenerator(3));

需要提示如何解决24和其他偶数。谢谢!

试试这个如果 ((i+j( % 2(

function gridGenerator(num) {
var grid = '';
var row = '';
for (var i = 0; i < num; i++) {
for (var j = 0; j < num; j++) {
if ((i+j) % 2) {
row += '_';
} else {
row += '#';
}
}
grid += row.slice(-num) + 'n';
}
return grid;
}
console.log(gridGenerator(4));

您可以使用条件num % 2来确定数字是偶数还是奇数。我会像你一样使用两个循环。根据行和列的偶数/奇数状态添加字符。在每行末尾插入换行符。

编辑:你去吧。

function generateGrid( num ) {
let i, j, grid = "";

for ( i = 0; i < num; i++ ) {
for ( j = 0; j < num; j++ ) {
if ( ( i + j ) % 2 ) {
	grid += "_";
} else {
	grid += "#";
}
}        
grid += "n";
}      
return grid;
}
var grid = generateGrid( 4 );
console.log( grid );

function gridGen(num) {
var even = '';
for (var i = 0; i< num ; i++)
even += (i%2) ? '_' : '#';
odd = even.substring(1) + (num%2 ? '_' : '#');
var out = '';
for (var i = 0; i< num ; i++)
out += ((i%2) ? odd : even) + 'n';
return out;
}
console.log('Even Case');
console.log( gridGen(8));
console.log('Odd Case');
console.log( gridGen(7));

如果您正在寻找另一种方法+效率,请尝试此

最新更新