2010-05-12 5 views
2

J'ai écrit un algorithme qui résout itérativement le problème. La première itération consiste en 6 étapes et toutes les itérations suivantes sont constituées de 5 étapes (la première étape est ignorée).Comment calculer l'indice actuel?

Ce que je veux calculer est l'étape actuelle (locale) dans l'itération de l'étape globale actuelle.

Par exemple, s'il y a 41 mesures au total qui signifie qu'il y a 8 itérations: indices de 1 à 6 appartiennent à première itération indices de 7 à 11 appartiennent à la seconde itération

...

Pour le calcul l'itération en cours j'ai écrit le code suivant:

if(currentStep <= 6) 
     iteration = 1; 
    else 
     iteration = floor((currentStep - 7)/5) + 2; 
    end 

Le problème persiste dans le calcul des étapes locales. en première itération les étapes réalisées sont les suivantes: 1, 2, 3, 4, 5, 6 dans toutes les itérations suivantes les étapes d'interprétation sont 2, 3, 4, 5, 6

Donc ce qui doit être fait est de transformer l'ensemble des étapes mondiales

[1 2 3 4 5 6 7 8 9 10 11 12 13 ... 41] 

dans un tableau des étapes locales

[1 2 3 4 5 6 2 3 4 5 6 2 3 ... 6].

J'apprécierais que quelqu'un puisse aider à trouver la solution à un problème donné.

Merci!

Répondre

2

Voici la solution en 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

Vérifiez ceci:

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

Il y a un bouton pour le formatage du code. En outre, il y a un bouton avec un point d'interrogation où vous trouverez toutes les explications. – Jonas

+0

@Jonas Oh..Oui merci Jonas! :-) – Himadri

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