Problema
Per ogni intero da 1 fino a limit, usa Fizz per i multipli di 3, Buzz per i multipli di 5 e FizzBuzz per i multipli di entrambi. Altrimenti usa il numero scritto come testo. Restituisci le voci in ordine invece di stamparle.
Implementa fizz_buzz(limit).
Input
limit: L'ultimo intero da includere.
Output
Restituisci una lista di stringhe, una per ogni intero da 1 a limit.
Vincoli
0 ≤ limit ≤ 10.000. Un limit pari a 0 produce una lista vuota.
Esempi
Input:
limit = 5
Output atteso:
expected = ["1", "2", "Fizz", "4", "Buzz"]
Input:
long long limit = 5;
Output atteso:
std::vector<std::string> expected = {"1", "2", "Fizz", "4", "Buzz"};
Input:
long limit = 5;
Output atteso:
string[] expected = new string[] {"1", "2", "Fizz", "4", "Buzz"};
Spiegazione
3 è divisibile per 3 e 5 è divisibile per 5. Le altre voci mantengono il loro numero.
Input:
limit = 0
Output atteso:
expected = []
Input:
long long limit = 0;
Output atteso:
std::vector<std::string> expected = {};
Input:
long limit = 0;
Output atteso:
string[] expected = new string[] {};
Spiegazione
Non ci sono interi da 1 a 0, quindi la lista è vuota.
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Ogni posizione dipende solo dalla divisibilità del numero corrente per 3 e 5.
Suggerimento 2
Costruisci la lista risultato in ordine controllando entrambe le condizioni di divisibilità per ogni numero.
Suggerimento 3
Gestisci bene il limite inferiore: se il limite è 0, il risultato è una lista vuota.
Complessità attesa
tempo O(n), spazio aggiuntivo O(n)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.