javascript - 在 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 坐标的总和是偶数,它将在板上添加一个“”。你如何达到这个逻辑?字符串中的每个其他位置是否都有一个空格,然后奇数包含一个“#”?
解决方案
在偶数行中,您需要偶数列和#
奇数列中的空间。添加偶数行和偶数列总是会产生偶数和,因此偶数列将x + y
是偶数。
在奇数行中,您需要相反的情况:奇数列和偶数列#
中的空间。添加奇数行和奇数列将产生偶数和,因此奇数列将x + y
是偶数。
所以从这个简单的数学我们可以看出,我们总是想在x + y
偶数时添加一个空格,否则添加#
,它将交替行中的布局。
当您可以硬编码网格大小时,您的方法很好。书中的方法更通用——它适用于任何网格大小,并且不依赖于偶数行。
推荐阅读
- node.js - 大多数 RESTFUL API 函数无法进行单元测试
- python - 我的 csv 文件中的文本被读取为原始字符串。它包含“it\'s”而不是它。我该如何清洁这个?
- django - Django:在模型级别而不是列级别应用验证器
- cypress - 赛普拉斯测试通过了单个表单输入字段,但忽略了以下输入字段
- python - 从嵌入列中的列表中提取元素
- python - 我的 python 气泵代码有什么问题?
- ios - 如何在 Swift 中向自定义 DateComponent 添加分钟
- python - 将列表中的唯一元素附加到新列表
- wordpress - AMP 上的 Google 表单是否需要 HTTPS?
- extreact - Sencha extJs/exreact 6/7 Tree 获取选中记录