首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript矩阵

Javascript矩阵
EN

Stack Overflow用户
提问于 2015-06-04 05:44:34
回答 3查看 578关注 0票数 0

下面的代码从左上角到右下角生成X的对角线,而不是从右上到左下角的对角线。我不知道该从哪里开始。应该用一个新变量创建另一个for循环吗?或者有什么简单的东西,比如为变量j添加一个else语句?任何帮助都将不胜感激。

代码语言:javascript
复制
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;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-04 06:04:58

不如:

代码语言:javascript
复制
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)输出

代码语言:javascript
复制
X       X
 X     X 
  X   X  
   X X   
    X    
   X X   
  X   X  
 X     X 
X       X

这里有个小摆设:https://jsfiddle.net/6w36s1kb/

票数 0
EN

Stack Overflow用户

发布于 2015-06-04 05:56:18

也许是这样的:

代码语言:javascript
复制
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)输出

代码语言:javascript
复制
 |     x                 x |
 |       x x     x         |
 | x                     x |
 |                         |
 |           x             |
 |                         |
 |     x                   |
 |               x         |
 |                       x |
 |                         |
 |                     x   |
 | x                       |
票数 1
EN

Stack Overflow用户

发布于 2015-06-04 06:18:30

假设您有(n*n)矩阵,如下所示:

代码语言:javascript
复制
   1 2 3 ... n    j
1 |           |
2 |           |
3 |           |
: |           |
n |           |

i

您知道(i == j)是选择以下x的关键,所以您成功地编写了该代码。(顺便说一下,我更喜欢j == i)。

代码语言:javascript
复制
   1 2 3 ... n    j
1 |x          |
2 |  x        |
3 |    x      |
: |           |
n |          x|

i

所以你需要找出选择以下x的规则:

代码语言:javascript
复制
   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”,则不会出现任何问题。然而,这将是有益于你考虑这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30635810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档