Quería una pregunta de FizzBuzz que no involucre al operador de módulo. Sobre todo porque suelo entrevistar a desarrolladores web para quienes el operador de módulo no aparece con tanta frecuencia. Y si no es algo con lo que te encuentres con regularidad, es una de esas cosas que buscas las pocas veces que lo necesitas.
(Por supuesto, es un concepto que, idealmente, debería haber encontrado en un curso de matemáticas en algún momento del camino, pero ese es un tema diferente).
Entonces, lo que se me ocurrió es lo que llamo, sin imaginación, Threes in Reverse . La instrucción es:
Escribe un programa que imprima, en orden inverso , cada múltiplo de 3 entre 1 y 200.
Hacerlo en orden normal es fácil: multiplique el índice de bucle por 3 hasta llegar a un número que exceda 200, luego salga. No tiene que preocuparse por cuántas iteraciones terminar después, simplemente continúe hasta que alcance el primer valor que es demasiado alto.
Pero yendo hacia atrás, hay que saber por dónde empezar. Algunos pueden darse cuenta intuitivamente de que 198 (3 * 66) es el múltiplo más alto de 3 y, como tal, codificar 66 en el ciclo. Otros pueden usar una operación matemática (división entera o un piso () en una división de punto flotante de 200 y 3) para calcular ese número y, al hacerlo, proporcionar algo más genéricamente aplicable.
Esencialmente, es el mismo tipo de problema que FizzBuzz (recorrer valores e imprimirlos, con un giro). Este es un problema para resolver que no usa nada tan (relativamente) esotérico como la operación de módulo.