2010-05-12 58 views
2

我寫了一個迭代解決問題的算法。第一次迭代由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,0, 在所有以下迭代中,執行步驟是2,3,4,5,6,012,304,7360,912,9296,, ,因此,必須做什麼是到的全球步驟

[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]陣列。

如果有人能夠幫助找到給定問題的解決方案,我將不勝感激。

謝謝!

回答

2

這裏是蟒蛇的解決方案:

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] 
0

檢查:

if(currentStep <= 6) 
{localStep = currentStep;} 
else 
{localStep = currentStep - ((iteration - 1) * 5);} 
+0

有代碼格式的按鈕。此外,還有一個帶有問號的按鈕,您可以在其中找到所有解釋。 – Jonas 2010-05-12 12:50:34

+0

@Jonas哦..是的,謝謝Jonas!:-) – Himadri 2010-05-13 03:51:22

3
local_step = [1 mod([0:39],5)+2]