我想使用 2 个 for 循环将类似此模式的内容(您可以在下面找到)绘制到字符串数组中。
let matrix = [
"....................",
".000000000000000000.",
".0................0.",
".0.00000000000000.0.",
".0.0............0.0.",
".0.0.0000000000.0.0.",
".0.0.0........0.0.0.",
".0.0.0.000000.0.0.0.",
".0.0.0.0....0.0.0.0.",
".0.0.0.0.00.0.0.0.0.",
".0.0.0.0.00.0.0.0.0.",
".0.0.0.0....0.0.0.0.",
".0.0.0.000000.0.0.0.",
".0.0.0........0.0.0.",
".0.0.0000000000.0.0.",
".0.0............0.0.",
".0.00000000000000.0.",
".0................0.",
".000000000000000000.",
"....................",
]
console.log(matrix)
注意:我希望能够指定模%
(相同字符的行和列的宽度,以便在一种情况下在另一种情况下获得更大的宽度)案例更小的模式。
这是我到目前为止得到的代码。目前它只能绘制从左上到右下的“对 Angular 线”。
let matrix = [
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
]
for (let y=0; y<matrix.length; y++) {
for (let x=0; x<matrix[y].length; x++) {
if (x==y) {
let row = matrix[y].split("")
row[x] = ".";
matrix[y] = row.join("")
}
}
}
console.log(matrix)
任何帮助将不胜感激。
最佳答案
我认为解决这个问题的方法是将预期的模式分成对称部分。
您可以看到数组的前半部分在下半部分反转。
如果你垂直分割它也是一样的。
因此,您唯一需要实现的是以下内容并反转几次以获得您想要的内容。
..........
.000000000
.0........
.0.0000000
.0.0......
.0.0.00000
.0.0.0....
.0.0.0.000
.0.0.0.0..
.0.0.0.0.0
let matrix = [
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
"00000000000000000000",
];
let base = matrix[0];
let baseArr = matrix[0].split('').slice(0, base.length/2);
let response = [];
for (let y=0; y<matrix.length/2; y++) {
for (let x=y; x<baseArr.length; x++) {
baseArr[x] = baseArr[x] == '0' ? '.' : '0';
}
response.push(baseArr.join('') + baseArr.slice(0, baseArr.length).reverse().join(''));
}
console.log(response);
let responseArray = response.concat(response.slice(0, response.length).reverse());
console.log(responseArray);
关于javascript - 模式转化为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50272373/