-1

特定の一連の値を生成するには、二重の for ループが必要です。これは、作成しようとしている迷路生成プログラムの隣接セルを見つけることの一部です (DFS メソッドを使用)。ここにいくつかの疑似コードがあります:

var values = [];
for (...) {
    for (...) {
        values.push([i, j]);
    }
}

ループが実行された後、「値」は[[0, 1], [0, -1], [1, 0], [-1, 0]]

助けてくれてありがとう!

4

3 に答える 3

2
for (var i = -1; i < 2; i++) {
    for (var j = -1; j < 2; j++) {
        if (Math.abs(i) + Math.abs(j) == 1)
        values.push([i, j]);
    }
}
于 2012-10-15T14:27:35.523 に答える
2

良い。あなたの正確な結果は次のように達成できます:

var seed_values = [1, -1, 0, 0];
var values = [];

for (var i = 0; i < 4; i++) {
    values.push([seed_values[i], seed_values[(i+2)%4]]);
}
于 2012-10-15T14:30:39.013 に答える
1

配列には実際の構造がないため、ループは配列を過度に複雑にするだけです。既に持っている配列リテラルを使用します。

もしそうなら[[0, 1], [1, 0], [0, -1], [-1, 0]]、これはあなたを助けることができます:

for (var values=[], i=0; i<Math.PI*2; i+=Math.PI/2)
    values.push([Math.cos(i), Math.sin(i)]);

…しかし、残念ながら は正確なゼロを計算せず、非常に近いものしか計算しませんMath.round

あなたの配列とネストされたループ構造については、私は考えることができます

var values = [];
for (var i=0; i<2; i++) {
    for (var j=1; j>=-1; j-=2, i*=-1) {
        values.push([i, +!i && j]);
    }
}

醜いですね。しかし、ネストされた 2 つのループをそれぞれ 2 回実行します :-)

于 2012-10-15T14:45:41.093 に答える