0

なるべくわかりやすく質問するように心がけますが、わからないところがあればコメントください。

シーケンス内の要素の値に基づいて要素の位置を決定する式を開発しようとしています。より具体的には、JavaScript を使用してこの性質の文字列を配列に分割し、 2ic-c c-c-c cの間隔を使用してその配列を反復処理してc値を抽出しています。たとえば、私の文字列が以前に投稿されたとおりであるとしましょう (長さ 6 c の値)。これらのc値を次のように配置したいと思います。数値はループ内のiの値を参照します (10 のために対称にするために余分な 0 を前に追加しました)。

00 ## 02
      ##
06 ## 04
##
08 ## 10

上記の配置になるiの値を使用してパターン/式を見つけようとしています。簡単にするために、 c値の位置00が (0,0)、02(1,0)、04(1,1)、06(0,1)、で08あるような x,y 座標系を仮定します。 (0,2) であり、10(1,2) です。

i値を使用して位置を決定するためのパターン/式/アルゴリズムの開発を手伝ってくれる人はいますか? (この例では) 6 つの異なる if ステートメントを書かなくても済むようにしています。

4

1 に答える 1

2

X、Y 座標系を使用する:

y = Math.floor(i / 2);
x = y % 2 == 0 ? i % 2 : (i + 1) % 2;

または、より簡潔にしたい場合(ただし非常に不明確):

y = Math.floor(i / 2);
x = (i + y % 2) % 2;

上記のコードは、コードが次のようなものであるという前提に基づいています。

for (var i = 0; i < theString.length / 2; i++) {
    var character = theString.charAt(2 * i);
    // work out the coordinates
}

コードが次のような場合:

for (var i = 0; i < theString.length; i += 2) {
    var character = theString.charAt(i);
    // work out the coordinates
}

次に、次のようになるように少し変更する必要があります。

j = i / 2;
y = Math.floor(j / 2);
x = y % 2 == 0 ? j % 2 : (j + 1) % 2;

または、より簡潔にしたい場合(ただし非常に不明確):

j = i / 2;
y = Math.floor(j / 2);
x = (j + y % 2) % 2;
于 2013-05-02T00:43:18.177 に答える