FizzBuzz est l’échauffement classique des entretiens : il combine une boucle, l’opérateur modulo et une suite de conditions. Tout le piège tient dans l’ordre des tests.
Énoncé
Affichez chaque nombre de 1 à 100, un par ligne, mais :
- affichez
Fizzà la place du nombre lorsqu’il est multiple de3; - affichez
Buzzà la place lorsqu’il est multiple de5; - affichez
FizzBuzzlorsqu’il est multiple de3et de5à la fois.
Contraintes :
- Bouclez de
1à100inclus. - Testez d’abord le cas « multiple des deux », ou traitez-le explicitement.
- Affichez une valeur par ligne.
Exemple
Les quinze premières lignes de la sortie attendue ressemblent à ceci :
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
Code de départ
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
// Affichez Fizz, Buzz, FizzBuzz ou le nombre.
}
}
Indices
Indice 1
Un nombre est multiple de 3 et de 5 exactement lorsqu’il est multiple de
15. Testez ce cas avant les autres.
Indice 2
i%3 == 0 est vrai pour les multiples de trois, et i%5 == 0 pour les
multiples de cinq.
Indice 3
Un switch sans condition se lit bien ici : placez case i%15 == 0 en premier,
puis case i%3 == 0, puis case i%5 == 0, puis un default qui affiche le
nombre.
Correction
Afficher la correction
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
switch {
case i%15 == 0:
fmt.Println("FizzBuzz")
case i%3 == 0:
fmt.Println("Fizz")
case i%5 == 0:
fmt.Println("Buzz")
default:
fmt.Println(i)
}
}
}La boucle for parcourt chaque nombre de 1 à 100. Un switch sans
expression évalue chaque condition case dans l’ordre et exécute la première
qui est vraie. Comme 15 est le plus petit commun multiple de 3 et 5,
tester i%15 == 0 en premier attrape le cas FizzBuzz avant que les tests de
simple multiple ne le volent.
Erreurs fréquentes :
- Tester
i%3eti%5avanti%15. Un nombre comme15affiche alorsFizzet n’atteint jamais le casFizzBuzz. - Oublier le
default, de sorte que les nombres simples ne sont jamais affichés. - Utiliser
<au lieu de<=dans la boucle, ce qui s’arrête à99.
Les boucles portent tout cet exercice. Approfondissez-les dans Les boucles en Go.