Desafio Algoritmos Computacionais

O jovem padawan precisava incrementar um contador inteiro (counter) com um valor inteiro (delta) variável. Entretanto, o contador não poderia ultrapassar um certo valor máximo (countermax).

Por se tratar de um problema simples, o aprendiz rapidamente escreveu o trecho de código abaixo:

if (counter + delta <= countermax) {

   counter += delta;

   return true;

}

O mestre, com toda sua experiência, falou: “Cuidado é preciso ter!”. Sugeriu ao padawan que escrevesse o código da seguinte forma:

if (countermax – counter >= delta) {

   counter += delta;

   return true;

}

Qual era o problema com a forma mais simples e intuitiva escrita pelo jovem aprendiz?

9 comentários sobre “Desafio Algoritmos Computacionais

  1. O problema é que na forma como o jovem aprendiz fez o contador, o mesmo podia passar do valor máximo (countermax) logo no primeiro teste já que o valor de (delta) é variável e não se sabe qual o valor dele.

  2. O problema com o método do Padawan é que a verificação pode resultar em erros dependendo do valor de delta. Como Yoda demonstrou, o segundo método não incorre em erros pois, como menciona o enunciado, o delta é a única variável cujo valor se altera, por isso é melhor usada como resultado de uma verificação do que como parte dela, simplificando assim o processamento do programa. May the 4th be with you.

  3. Na condição que o prendiz fez, dependendo do valor de delta, o valor do counter pode ser maior que o valor do countermax. Já na condição elaborada pelo mestre, independente do valor de delta, o valor do conter nunca será maior que o valor do countermax.

Os comentários estão desativados.