Guida pratica al Fizz Buzz, il problema che ti fa capire se sai programmare

FizzBuzz è un popolare gioco matematico spesso usato come esercizio per insegnare ai bambini i concetti di divisione e multipli. Questo gioco può essere utilizzato sia come strumento didattico per insegnare i concetti di divisione ai bambini, sia come esercizio di programmazione per valutare le abilità di programmazione di base.

L’obiettivo è generare una sequenza di numeri da 1 a N, sostituendo determinati numeri con parole specifiche in base a determinate regole. Per ogni numero nella sequenza, si applicano le seguenti regole:

Annuncio:
Vuoi inviare SMS pubblicitari della tua azienda? Prova SMSHosting (clicca qui) .

  • Se il numero è divisibile sia per 3 che per 5, anziché stampare il numero, si stampa “FizzBuzz“.
  • Se il numero è solo divisibile per 3, si stampa “Fizz”.
  • Se il numero è solo divisibile per 5, si stampa “Buzz”.
  • Se il numero non è divisibile né per 3 né per 5, si stampa semplicemente il numero stesso.

L’obiettivo è creare una sequenza di numeri in cui i multipli di 3 vengono sostituiti da “Fizz”, i multipli di 5 vengono sostituiti da “Buzz”, e i multipli di entrambi 3 e 5 vengono sostituiti da “FizzBuzz”.

Fizz Buzz in Python

Procedendo per gradi, un programmatore principiante potrebbe essere tentato dallo scrivere qualcosa del genere, considerando che i casi in gioco sono soltanto tre per cui servono tre condizioni per tutti i numeri che vanno da 1 ad N:


def fizzbuzz(n):
    # Iniziamo un ciclo che va da 1 fino a n (incluso)
    for i in range(1, n+1):
        # Se i è divisibile per 3, stampiamo "Fizz"
        if i % 3 == 0:
            print("Fizz")
        # Altrimenti, se i è divisibile per 5, stampiamo "Buzz"
        elif i % 5 == 0:
            print("Buzz")
        # Altrimenti, se non è divisibile né per 3 né per 5, stampiamo "FizzBuzz"
        else:
            print("FizzBuzz")

# Assegniamo un valore di esempio a n e chiamiamo la funzione fizzbuzz con questo valore
n = 10
fizzbuzz(n)

A leggerla così potrebbe sembrare corretto, ma basta lanciare il programma per rendersi conto che non tira fuori quello che servirebbe. La sequenza risultante infatti è solo parzialmente corretta:

FizzBuzz
FizzBuzz
Fizz
FizzBuzz
Buzz
Fizz
FizzBuzz
FizzBuzz
Fizz
Buzz

Non abbiamo considerato un caso importante, in questo caso, che consiste in quello in cui viene stampato il numero direttamente.

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Per fare questo, ci rendiamo conto che i casi da considerare sono in realtà 4:

  • Se un numero è divisibile solo per 3, viene sostituito con “Fizz”.
  • Se un numero è divisibile solo per 5, viene sostituito con “Buzz”.
  • Se un numero è divisibile sia per 3 che per 5, viene sostituito con “FizzBuzz”.
  • Se un numero non è divisibile né per 3 né per 5, rimane invariato e viene semplicemente stampato.

Chiarito questo, scriviamo:

# Definiamo una funzione chiamata fizzbuzz che prende un parametro n
def fizzbuzz(n):
    # Iniziamo un ciclo che va da 1 fino a n (incluso)
    for i in range(1, n+1):
        # Se i è divisibile per 3, stampiamo "Fizz"
        if i % 3 == 0:
            print("Fizz")
        # Altrimenti, se i è divisibile per 5, stampiamo "Buzz"
        elif i % 5 == 0:
            print("Buzz")
        # Altrimenti, se non è divisibile né per 3 né per 5, stampiamo "FizzBuzz"
        else:
            print("FizzBuzz")

# Assegniamo un valore di esempio a n e chiamiamo la funzione fizzbuzz con questo valore
n = 10
fizzbuzz(n)

Fizz Buzz in C++

#include <iostream>
using namespace std;

void fizzbuzz(int n) {
for (int i = 1; i <= n; ++i) {
if (i % 3 == 0 && i % 5 == 0) {
cout << "FizzBuzz" << endl;
} else if (i % 3 == 0) {
cout << "Fizz" << endl;
} else if (i % 5 == 0) {
cout << "Buzz" << endl;
} else {
cout << i << endl;
}
}
}

int main() {
int n = 20; // Puoi cambiare questo numero per visualizzare la sequenza fino a un limite diverso
fizzbuzz(n);
return 0;
}

👇 Da non perdere 👇



Questo sito esiste da 4548 giorni (12 anni), e contiene ad oggi 4099 articoli (circa 3.279.200 parole in tutto) e 18 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Privacy e termini di servizio / Cookie - Il nostro network è composto da Lipercubo , Pagare.online e Trovalost
Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Questo sito contribuisce alla audience di sè stesso.