Javascript,试图在一段时间循环中添加一个线刹车



需要使用以下规则集创建一个棋盘:

编写一个程序,用于创建表示 8×8 网格的字符串,使用换行符分隔行。在网格的每个位置都有一个空格或"#"字符。角色应该组成一个棋盘。

将此字符串传递给控制台.log应显示如下内容:

# # # #
# # # # 
# # # #
# # # # 
# # # #
# # # # 
# # # #
# # # # 

这是我为它编写的代码:

var chessBoardSize = 8;
var chessBoard = " ";
var lineBreakCount = 0;
while (chessBoard.length <= chessBoardSize * chessBoardSize) {
lineBreakCount++;
if (lineBreakCount === chessBoardSize) {
chessBoard += "n";
lineBreakCount = 0;
}
if (chessBoard.slice(-1) === " ") {
chessBoard = chessBoard + "#";
} else if (chessBoard.slice(-1) === "#") {
chessBoard = chessBoard + " ";
}
}
console.log(chessBoard);

一旦在该行中使用了 8 个字符,我就无法将字符串放在新行上。这是我试图弄清楚的程序的一部分:

lineBreakCount++;
if (lineBreakCount === chessBoardSize) {
chessBoard += "n";
lineBreakCount = 0;
}

当我运行代码时,我得到这个:

# # # #

但是,应该是这样的:

# # # #
# # # # 
# # # #
# # # # 
# # # #
# # # # 
# # # #
# # # # 

您的逻辑无法处理最后一个字符可能不仅仅是"#"或"的事实。 这应该有效:

var chessBoardSize = 8;
var chessBoard = " ";
var lineBreakCount = 0;
var max = chessBoardSize*chessBoardSize;
for(let i = 1; i < max; i++) {
lineBreakCount++;
if (lineBreakCount === chessBoardSize) {
chessBoard += "n";
lineBreakCount = 0;
}
if (chessBoard[chessBoard.length - 1] === 'n') {
chessBoard += chessBoard[chessBoard.length - 2];
} else if(chessBoard.slice(-1) === " ") {
chessBoard += '#';
} else {
chessBoard = chessBoard + " ";
}
}
console.log(chessBoard);

您正在尝试用复杂的解决方案解决一个简单的问题

结果是一个矩阵,这意味着你(可能不需要(需要嵌套循环。

  1. 循环遍历列。
  2. 循环穿过一条线。
  3. 添加检查if-else以在#" "之间进行选择。

我们看到#的位置只在达到这个数学规则的情况下:case%2 === 0


const chessboard = (size, lineLength) => {
for (let vindex = 0; vindex < size + 1; vindex++) {
let line = String("");
for (let hindex = 0; hindex < lineLength + 1; hindex++) {
vindex % 2 === 0 && ((hindex % 2 === 0 && (line += "#")) || (line += " "))
vindex % 2 != 0 && ((hindex % 2 != 0 && (line += "#")) || (line += " "))
}
console.log(line)
}
}
chessboard(8, 10)

最新更新