FizzBuzz en Go

Affichez les nombres de 1 à 100 en remplaçant les multiples de 3 par Fizz, de 5 par Buzz et des deux par FizzBuzz, avec une correction testée.

Niveau
Facile
Temps estimé
15 min
Notions abordées
conditions, boucles

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 de 3 ;
  • affichez Buzz à la place lorsqu’il est multiple de 5 ;
  • affichez FizzBuzz lorsqu’il est multiple de 3 et de 5 à la fois.

Contraintes :

  • Bouclez de 1 à 100 inclus.
  • 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%3 et i%5 avant i%15. Un nombre comme 15 affiche alors Fizz et n’atteint jamais le cas FizzBuzz.
  • 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.

Recherche

La recherche s’exécute entièrement dans votre navigateur.