首页 > 解决方案 > 在 Javascript 中使用字符串构建网格

问题描述

我一直在使用 JavaScript 教科书并进行一些初步练习。我目前正在自学。

一个练习要求使用“#”创建一个 8 X 8 板。我做的很简单,能够制作出这本书的样子,然后我看了看答案。我有几个关于逻辑的问题

let board2 = " # # # #\n# # # #";
for (let n = 0; n < 4; n++) {
  console.log(board2);
}

本书做到以下几点

let size = 8;

let board = "";

for (let y = 0; y < size; y++) {
  for (let x = 0; x < size; x++) {
    if ((x + y) % 2 == 0) {
      board += " ";
    } else {
      board += "#";
    }
  }
  board += "\n";
}

console.log(board);

我的理解是,如果 X 和 Y 坐标的总和是偶数,它将在板上添加一个“”。你如何达到这个逻辑?字符串中的每个其他位置是否都有一个空格,然后奇数包含一个“#”?

标签: javascriptstringloopslogic

解决方案


在偶数行中,您需要偶数列和#奇数列中的空间。添加偶数行和偶数列总是会产生偶数和,因此偶数列将x + y是偶数。

在奇数行中,您需要相反的情况:奇数列和偶数列#中的空间。添加奇数行和奇数列将产生偶数和,因此奇数列将x + y是偶数。

所以从这个简单的数学我们可以看出,我们总是想在x + y偶数时添加一个空格,否则添加#,它将交替行中的布局。

当您可以硬编码网格大小时,您的方法很好。书中的方法更通用——它适用于任何网格大小,并且不依赖于偶数行。


推荐阅读