2010-05-12 5 views
2

Я написал алгоритм, который итеративно решает проблему. Первая итерация состоит из 6 шагов, и все последующие итерации состоят из 5 шагов (первый шаг пропускается).Как рассчитать текущий индекс?

Что я хочу рассчитать - это текущий (локальный) шаг в итерации с текущего глобального шага.

Например, если есть 41 шагов в общей сложности, что означает есть 8 итераций: индексов от 1 до 6 принадлежат 1-ю итерации индексов от 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].

Я был бы признателен, если бы кто-нибудь мог помочь найти решение данной проблемы.

Спасибо!

ответ

2

Вот решение в 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] 
0

Проверьте это:

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

Там есть кнопка для кода форматирования. Кроме того, есть кнопка с вопросительным знаком, где вы найдете все объяснения. – Jonas

+0

@ Джонас Ах .. Да, спасибо Йонасу! :-) – Himadri

Смежные вопросы