我已经写了一个迭代解决这个问题的算法。第一个迭代由6个步骤组成,所有后续迭代由5个步骤组成(跳过第一个步骤)。
我要计算的是从当前全局步骤开始的迭代中的当前(局部)步骤。
例如,如果总共有41个步骤,这意味着有8次迭代:从1到6的索引属于第一次迭代,从7到11的索引属于第二次迭代……
为了计算当前迭代,我编写了以下代码:
if(currentStep <= 6)
iteration = 1;
else
iteration = floor((currentStep - 7)/5) + 2;
end问题仍然存在于计算局部步长上。在第一次迭代中,执行的步骤是: 1,2,3,4,5,6在所有后续迭代中,执行的步骤是2,3,4,5,6
因此,必须要做的是转换全局步骤数组
[1 2 3 4 5 6 7 8 9 10 11 12 13 ... 41] 放入局部步骤数组
[1 2 3 4 5 6 2 3 4 5 6 2 3 ... 6]。
如果有人能帮助我找到一个特定问题的解决方案,我将不胜感激。
谢谢!
发布于 2010-05-12 19:00:09
以下是python的解决方案:
L = range(1,42) # so L = [1,2,...,41]
s = [(i-2)%5+2 for i in L]
# adjust for the first step:
s[0]=1
# now s = [1,2,3,4,5,6,2,3,4,...,5,6]发布于 2010-05-12 19:14:25
local_step = [1 mod([0:39],5)+2]发布于 2010-05-12 18:40:24
请检查以下内容:
if(currentStep <= 6)
{localStep = currentStep;}
else
{localStep = currentStep - ((iteration - 1) * 5);}https://stackoverflow.com/questions/2817794
复制相似问题