如何以编程方式生成此序列

时间:2009-11-30 11:53:06

标签: arrays math

如何动态生成此数组。

var posX:Array = [0,-20,20,-40,0,40,-60,-20,20,60,-80,-40,0,40,80,-100,-60,-20,20,60,100]

数组中的数字指的是对象的x位置。我用它来放置三角形的物体。

     0
   -20 20
  -40 0 40
-60 -20 20 60 etc

提前谢谢

4 个答案:

答案 0 :(得分:1)

var d:Number = 20;
var a:Array = [];
for(var i:Number = 0; i < 6; i++)
{
    for(var j:Number = 0; j <= i; j++)
    {
        a.push(d * (2 * j - i));
    }
}
trace(a.join());    

每行的第一个数字是从零开始的行索引时间d的负数:- i * d
连续的每个后续数字都超过前一个数字2*d。因此,后续数字=第一元素+ 2 * d *基于零的索引在行内

这是= - i * d + 2 * d * j = d * (2 * j - i)

答案 1 :(得分:0)

此代码输出数组的后续元素,用于三角形的十行:

var x:int;
var y:int;
for (y = 0; y < 10; y++) {
    for (x = 0; x < y + 1; x++) {
        trace(20 * ( -y + 2 * x));
    }
}

答案 2 :(得分:0)

我不知道动作脚本,但伪代码是这样的:

for (row=0; ; row++)
{
   maxVal=20*row;
   for (val=-maxVal;val<=maxVal;val+=40)
    posX.append(val);
}

答案 3 :(得分:0)

f#中每行的代码:

let StepN n = 
    let n = -(n*20)
    [
    for x in [n..40..-n] do
        yield x
    ]