Как рассчитать текущий индекс? - PullRequest
2 голосов
/ 12 мая 2010

Я написал алгоритм, который итеративно решает проблему. Первая итерация состоит из 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].

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

Спасибо!

Ответы [ 3 ]

3 голосов
/ 12 мая 2010
local_step = [1 mod([0:39],5)+2]
2 голосов
/ 12 мая 2010

Вот решение в 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 голосов
/ 12 мая 2010

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

if(currentStep <= 6)  
{localStep = currentStep;}  
else  
{localStep = currentStep - ((iteration - 1) * 5);}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...