下面的代码从左上角到右下角生成X的对角线,而不是从右上到左下角的对角线。我不知道该从哪里开始。应该用一个新变量创建另一个for循环吗?或者有什么简单的东西,比如为变量j添加一个else语句?任何帮助都将不胜感激。
var nMatrix = "";
var n = prompt ("enter a number");
n = parseInt(n);
for (var i = 1; i <= n; i++) {
var row = "| ";
for (var j = 1; j <= n; j++) {
if (i == j)
row += "x "; //top left to bottom right diagonally
else
row += Math.floor (9*Math.random()+1)+" ";
}
row += "|\n";
nMatrix += row;
}
document.getElementById ("matrix").innerText = nMatrix;发布于 2015-06-04 06:04:58
不如:
function grid(size) {
var out = "";
for (var i = 0; i < size; i++) {
for (var j = 0; j < size; j++) {
out += (i == j || i == (size - j - 1)) ? "X" : " ";
}
out += "\n";
}
return out;
}grid(9)输出
X X
X X
X X
X X
X
X X
X X
X X
X X这里有个小摆设:https://jsfiddle.net/6w36s1kb/
发布于 2015-06-04 05:56:18
也许是这样的:
function grid (size) {
var out = '';
for (var row = 0; row < size; row++) {
out += '| ';
for (var col = 0; col < size; col++) {
out += Math.random() < 0.9 ? ' ' : 'x ';
}
out += '|\n';
}
return out;
}grid(12)输出
| x x |
| x x x |
| x x |
| |
| x |
| |
| x |
| x |
| x |
| |
| x |
| x |发布于 2015-06-04 06:18:30
假设您有(n*n)矩阵,如下所示:
1 2 3 ... n j
1 | |
2 | |
3 | |
: | |
n | |
i您知道(i == j)是选择以下x的关键,所以您成功地编写了该代码。(顺便说一下,我更喜欢j == i)。
1 2 3 ... n j
1 |x |
2 | x |
3 | x |
: | |
n | x|
i所以你需要找出选择以下x的规则:
1 2 3 ... n j
1 | x|
2 | x |
3 | |
: | x |
n |x |
i你如何看待x的规则?这不是对每一个x,i+j = n+1持有吗?
所以,您需要检查的是(j,==,n+1-i)。如果这是成立的,你需要画x。
您可能需要考虑的一件事是,当(j == i)和(j == n+1- i)都成立时:当n是奇数时,这是可能的。如果您正确地使用了“else If”,则不会出现任何问题。然而,这将是有益于你考虑这一点。
https://stackoverflow.com/questions/30635810
复制相似问题