我是用滔滔不绝的javascript做这个问题的,它应该像这样打印
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
但似乎无法解决如何交替行。到目前为止,我刚刚提出了网格。
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
使用此代码
var hash = ''
var size = 8
for (var i = 0; i < size; i++) {
for (var j = 0; j < size; j++) {
hash.charAt(hash.length-1) === '#' ? hash += ' ': hash += '#'
}
hash += '\n'
}
console.log(hash)
他们用来回答问题的代码就是这个
var size = 8;
var board = "";
for (var y = 0; y < size; y++) {
for (var x = 0; x < size; x++) {
if ((x + y) % 2 == 0)
board += " ";
else
board += "#";
}
board += "\n";
}
console.log(board);
但我确信有一种方法可以使用我的代码。有什么想法吗?
答案 0 :(得分:1)
你应该在奇数/偶数行之间做出区别。你可以通过查看行索引和列索引的总和来做到这一点:如果其中一个是奇数,则产生一个哈希,否则就是一个空格:
var hash = ''
var size = 8
for (var i = 0; i < size; i++) {
for (var j = 0; j < size; j++) {
(i + j) % 2 ? hash += '#': hash += ' '
}
hash += '\n'
}
console.log(hash)
请注意,您可以将分配移出三元运算符:
hash += (i + j) % 2 ? '#' : ' '
但老实说,建议不要继续添加字符串,因为在JavaScript字符串中是不可变的,所以你真的用每个+=
操作创建一个新字符串。
我建议使用这个ES6代码:
var hash = ''
var size = 8
hash = Array.from(Array(size), (_, i) =>
Array.from(Array(size), (_, j) =>
(i+j)%2 ? '#' : ' '
).join('')
).join('\n');
console.log(hash)
答案 1 :(得分:0)
您需要识别偶数行并在字符串的开头插入一个额外的空格。
// Identify the even row and add an Extra space
if( i % 2 === 0) { hash+= ' '}
以下代码应该产生预期的输出。
var hash = ''
var size = 8
for (var i = 0; i < size; i++) {
// Identify the even row and add an Extra space
if( i % 2 === 0) { hash+= ' '}
for (var j = 0; j < size-1; j++) {
hash.charAt(hash.length-1) === '#' ? (hash += ' '): (hash += '#')
}
hash += '\n'
}
console.log(hash)
&#13;