Volevo una domanda su FizzBuzz che non coinvolgesse l'operatore modulo. Soprattutto perché di solito intervisto gli sviluppatori web per i quali l'operatore modulo non viene fuori così spesso. E se non è qualcosa in cui ti imbatti regolarmente, è una di quelle cose che cerchi le poche volte che ne hai bisogno.
(Certo, è un concetto che, idealmente, dovresti aver incontrato in un corso di matematica da qualche parte lungo il percorso, ma questo è un argomento diverso.)
Quindi, quello che mi è venuto in mente è quello che chiamo, senza fantasia, Threes in Reverse . L'istruzione è:
Scrivi un programma che stampa, in ordine inverso , ogni multiplo di 3 compreso tra 1 e 200.
Farlo in ordine normale è facile: moltiplica l'indice del ciclo per 3 fino a raggiungere un numero che supera 200, quindi esci. Non devi preoccuparti di quante iterazioni terminare dopo, vai avanti finché non raggiungi il primo valore troppo alto.
Ma andando indietro, devi sapere da dove iniziare. Alcuni potrebbero realizzare intuitivamente che 198 (3 * 66) è il multiplo più alto di 3 e, come tale, codifica 66 nel ciclo. Altri potrebbero usare un'operazione matematica (divisione intera o floor () su una divisione in virgola mobile di 200 e 3) per calcolare quel numero e, così facendo, fornire qualcosa di più genericamente applicabile.
Essenzialmente, è lo stesso tipo di problema di FizzBuzz (scorrere i valori e stamparli, con una svolta). Questo è un problema da risolvere che non usa nulla di così (relativamente) esoterico come l'operazione modulo.