Após os muitos (dois?) Desafios relacionados ao FizzBuzz publicados recentemente no PPCG, fiquei tentado a criar o meu. Contemplar...
Fizz Buzz Lightyear
Escreva um programa ou função que utilize um número inteiro n
e imprima FizzBuzz
para qualquer número divisível por 15, Fizz
para qualquer número divisível por 3 e Buzz
para qualquer número divisível por 5, até (e inclusive) n
. A saída para todos i
deve ser seguida por uma nova linha. Mas há uma torção!
Pela terceira vez que você imprime Buzz
, o Buzz Lightyear finalmente atende à sua chamada e falha no seu programa. Ele então se apresenta - mas desde que ele caiu, parte do que ele disse se confunde com a saída do seu programa:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(ou seja, apenas anexar Lightyear, Space Ranger, Universe Protection Unit.
a Buzz
ou FizzBuzz
- tudo o que você teria mostrado o contrário Observe o espaço à esquerda.)
No entanto, Buzz Lightyear, sendo o Space Ranger que ele é, tem uma audição muito aguda e, portanto, a impressão FizzBuzz
contará para a sua Buzz
contagem .
Então, o Buzz fica por aqui para defender seu computador de toda essa saída ruim, até você atingir outro número que é divisível por 5 (ou 15, pois esses também são divisíveis por 5). O que isso significa é que, até que você precise imprimir Buzz
(ou FizzBuzz
) novamente, você não imprime nada.
Quando você finalmente atinge essa condição, o Buzz parte:
To infinity and beyond!
Saída de exemplo
Esta é a saída esperada para n = 25
: (observe como pula 16 a 19)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
To infinity and beyond!
Fizz
22
23
Fizz
Buzz
Regras
A nova linha à direita opcional é aceitável.
Isso é código de golfe; como tal, o código mais curto, em bytes, vence.
Suponha que dado n
é válido e maior ou igual a 15 (que é quando o desafio se desvia do fizzbuzz padrão)
O Google Buzz recebe você quando o "contador de Buzz" (que conta ambos Buzz
e FizzBuzz
) atinge 3; ele parte quando o próximo Buzz
(incluindo, novamente, ambos Buzz
e FizzBuzz
) é impresso.
O número em que ele parte não conta para o próximo "contador de buzz"; você deve começar a contar os Buzz
es novamente a partir de 0. Por exemplo, um programa em execução com n = 25
(exemplo de saída) deve terminar com um "contador de buzz" igual a 1, pois é quantas vezes Buzz
foi impresso desde a última vez em que ele partiu.
Caso n
ocorra entre uma das chegadas de Buzz e uma de suas saídas (ou seja, ele ainda está lá - você não está imprimindo nada), espera-se um término gracioso. Portanto, a última linha de saída seria sua introdução
As brechas padrão são proibidas.
n
fica entre a chegada de Buzz Lightyear e sua partida?