Как увеличить и уменьшить значение между двумя значениями - PullRequest
1 голос
/ 09 января 2011

Это неловко, но:

Допустим, я хочу добавить 1 к x, пока он не достигнет 100. Затем я хочу вычесть 1 из x, пока не достигнет 1. Затем я хочу добавитьОт 1 до x, пока не достигнет 100, и так далее.

Может ли кто-нибудь предоставить какой-нибудь простой псевдокод для этого вопроса, который заставляет меня чувствовать себя особенно глупым.

Спасибо:)


ПРАВКА 1

Извинения!Я сделал мой пример слишком простым.Я на самом деле буду увеличивать, используя случайное число на каждой итерации, поэтому ответы, которые требуют (x == 100), не будут работать, так как x обязательно превысит 100 и ниже 1.

Ответы [ 3 ]

2 голосов
/ 09 января 2011

Вот математический способ:

for(int i=0;i<10000000;i++)
  print(abs(i%200-100))

Путь Алго:

int i = 1;
while(1)
{
 while(i<100)print(i++);
 while(i>1)print(--i);
}

Произвольное обновление:

int i = 1;
while(1)
{
 while(i<100)print(i=min(100,i+random()));
 while(i>1)print(i=max(1,i-random()));
}
0 голосов
/ 09 января 2011
int ceiling = 100;
int floor = 1;
int x = 1;
int step = GetRandomNumber(); //assume this isn't 0

while(someArbitraryCuttoffOrAlwaysTrueIDK) {
    while(x + step <= ceiling) {
        x += step;
    }
    while(x - step >= floor) {
        x -= step;
    }
}

Или, будучи более кратким (с риском быть менее ясным):

while(someArbitraryCuttoffOrAlwaysTrueIDK) {
    while((step > 0  && x + step <= ceiling) || (step < 0 && x + step >= floor)) 
    {
        x += step;
    }
    step = step * -1;
}

В качестве альтернативы:

while(someArbitraryCuttoffOrAlwaysTrueIDK) {
    if((step > 0  && x + step > ceiling) || (step < 0 && x + step < floor)) 
    {
        step = step * -1;
    }
    x += step;
}
0 голосов
/ 09 января 2011

C #:

Random rnd = new Random();
int someVarToIncreaseDecrease = 0;
bool increasing = true;

while(true) {
    int addSubtractInt = rnd.Next(someUpperBound);

    if (increasing && (someVarToIncreaseDecrease + addSubtractInt >= 100)) 
       increasing = false;
    else if (!increasing && (someVarToIncreaseDecrease - addSubtractInt < 0)) 
       increasing = true;

    if (increasing) {
       someVarToIncreaseDecrease += addSubtractInt;
    }
    else {
       someVarToIncreaseDecrease -= addSubtractInt;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...