开发公式/模式来确定位置

时间:2013-05-02 00:32:04

标签: javascript formula

我会尽可能清楚地询问,但如果您不清楚某些部分,请发表评论。

我正在尝试开发一个公式,以根据序列中该元素的值来确定元素的位置。更具体地说,我使用JavaScript将这种性质的字符串:c-c c-c-c c分成一个数组,并使用 2i 的间隔迭代该数组以提取 c 价值观。例如,假设我的字符串与之前发布的一样(长度为6 c)。我希望以下面的方式放置这些 c 值,其中数字指的是我的循环中 i 的值(我添加了额外的0以使其对称,因为10):

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

我正在尝试使用 i 的值找到一个模式/公式,这将导致上述定位。为简单起见,我们假设x,y坐标系使00处的 c 值的位置为(0,0),02为(1,0) ),04是(1,1),06是(0,1),08是(0,2),10是(1,2)

任何人都可以帮助开发模式/公式/算法来确定使用 i 值的定位吗?我试图不必写(在这个例子中)六个不同的if语句。

1 个答案:

答案 0 :(得分: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;