Постановка задачи в виде цифр
Ожидаемые результаты при условии, что пороговое значение = 9
Постановка задачи в виде текста —
Есть клиенты T, которые обслуживают сервер X & ниже конфигурация
T0, T1, T2, T3: — X0
Т4, Т5, Т6, Т7: — Х1
Т8, Т9, Т10, Т11: — Х2
Т12, Т13, Т14, Т15: — Х3
T0 до T3 Служит в циклическом режиме до X0, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
Т0, Т1, Т2, Т3, Т0, Т1, Т2, Т3,T0
T4 до T7 Служит в циклическом режиме до X1, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
T4, T5, T6, T7, T4, T5, T6, T7,T4
T8 до T11 Служит в циклическом режиме до X2, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
T8, T9, T10, T11, T8, T9, T10, T11,T8
T12 до T15 Служит в циклическом режиме до X3, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
T12, T13, T14, T15, T12, T13, T14, T15,T12
ТАК ПОСЛЕДОВАТЕЛЬНОСТЬ ПОСМОТРЕТ, КАК ЭТО
Т0, Т1, Т2, Т3, Т0, Т1, Т2, Т3,T0 : — X0
T4, T5, T6, T7, T4, T5, T6, T7,T4 : — X1
T8, T9, T10, T11, T8, T9, T10, T11,T8 : — X2
T12, T13, T14, T15, T12, T13, T14, T15,T12 : — X3
ПОСЛЕ ТОГО, КАК ВСЕ СЛЕДУЮЩАЯ СЛЕДУЮЩАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ, СМОТРЕТ
Т1, Т2, Т3, Т0, Т1, Т2, Т3, Т0,T1 : — X0
T5, T6, T7, T4, T5, T6, T7, T4,T5 : — X1
T9, T10, T11, T8, T9, T10, T11, T8,T9 : — X2
T13, T14, T15, T12, T13, T14, T15, T12,T13 X3
как видите, последний использованный T ‘пропускается в следующей итерации.
Мне удалось написать фрагмент кода, код здесь, но в моем коде я не могу справедливо распределить токены, как ожидалось в таблице (где последний использованный T ‘после достижения порога должен быть пропущен в следующей итерации).
Пожалуйста, предложите.
#include <iostream>
int CurrentT = 0;
int No_Of_T_Per_X = 4;
int OutputX = 0;
int No_Of_X = 4;
int Valid_T[16] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int Processed_Tokens[4] = {0,0,0,0};
int THRESHOLD[4] = {9,9,9,9};
int LastT_Used[4] = {0,0,0,0};
static unsigned int getTargetX(unsigned int id, unsigned int num_T_per_X)
{ return id / num_T_per_X; }
bool batch = false;
int main()
{
int prev_SPMindex = -1;
int next_SPMindex = 0;
for(int i=1;i<=1000;i++) { // Looping to test some random no. of tokens..
if ( Processed_Tokens[OutputX] >= THRESHOLD[OutputX]){
THRESHOLD[OutputX] = THRESHOLD[OutputX] + 9;
//LastT_Used[OutputX] = CurrentT;
prev_SPMindex = next_SPMindex;
CurrentT = prev_SPMindex;
}
CurrentT = (CurrentT + 1) % (sizeof(Valid_T)/sizeof(int)); // Currently Processed T'
if(((CurrentT % No_Of_T_Per_X) == 0)){
next_SPMindex = CurrentT -1;
CurrentT = prev_SPMindex;
CurrentT = (CurrentT + 1) % (sizeof(Valid_T)/sizeof(int));
}
OutputX = getTargetX(Valid_T[CurrentT], No_Of_T_Per_X); // Currently Processed X'
Processed_Tokens[OutputX] += 1; // Increasing the Count of Tokens to test
}
return 0;
}
Задача ещё не решена.