A raíz de los muchos (¿dos?) Desafíos relacionados con FizzBuzz publicados recientemente en PPCG, he tenido la tentación de proponer los míos. Mirad...
Fizz Buzz Lightyear
Escriba un programa o función que tome un número entero ny se imprima FizzBuzzpara cualquier número divisible por 15, Fizzpara cualquier número divisible por 3 y Buzzpara cualquier número divisible por 5, hasta (e incluido) n. La salida para todos idebe ir seguida de una nueva línea. Pero hay un giro!
Por cada tercera vez que imprime Buzz, Buzz Lightyear finalmente atiende su llamada y aterriza en su programa. Luego se presenta, pero desde que se estrelló, parte de lo que dijo se mezcla con la salida de su programa:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(es decir, sólo se anexados Lightyear, Space Ranger, Universe Protection Unit.a Buzzo FizzBuzz- lo que es lo que le ha mostrado lo contrario Tenga en cuenta el espacio inicial.)
Sin embargo, Buzz Lightyear, siendo el Space Ranger que es, tiene una audición muy aguda, por lo que la impresión FizzBuzzcontará para su Buzzcuenta .
Luego, Buzz se queda para defender su computadora de toda esa salida malvada, hasta que alcanza otro número que es divisible por 5 (o 15, ya que también son divisibles por 5). Lo que eso significa es que hasta que tenga que imprimir Buzz(o FizzBuzz) nuevamente, no imprime nada en absoluto.
Cuando finalmente alcanzas esa condición, Buzz se va:
To infinity and beyond!
Salida de ejemplo
Este es el resultado esperado para n = 25: (observe cómo se salta de 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
Reglas
Nueva línea final opcional es aceptable.
Este es el código de golf; como tal, el código más corto, en bytes, gana.
Suponga que lo dado nes válido y mayor o igual a 15 (que es cuando el desafío se desvía por primera vez del fizzbuzz estándar)
Buzz te saluda cuando el "contador de Buzz" (que cuenta ambos Buzzy FizzBuzz) golpea 3; él sale cuando se imprime el siguiente Buzz(incluyendo, nuevamente, ambos Buzzy FizzBuzz).
El número en el que sale no cuenta para el próximo "contador de zumbidos"; en su lugar, debe comenzar a contar los Buzzes nuevamente desde 0. Por ejemplo, un programa que se ejecuta con n = 25(salida de ejemplo) debe terminar con un "Contador de zumbidos" de 1, ya que esa es la cantidad de veces que Buzzse imprimió desde la última vez que se fue.
En caso de que ncaiga entre una de las llegadas de Buzz y una de sus salidas (es decir, él todavía está allí, no está imprimiendo nada), se espera una terminación elegante. Por lo tanto, la última línea de salida sería su introducción.
Las lagunas estándar están prohibidas.

ncae entre la llegada de Buzz Lightyear y su partida?Respuestas:
Javascript (ES6),
182175 bytesfuente
Python 2 ,
185178172 bytesPruébalo en línea!
Explicación
Observar: Buzz Lightyear llega al tercer "número de zumbido" y sale en el cuarto. Los "números de zumbido" son múltiplos de cinco. Por lo tanto, los movimientos de Buzz suceden en un ciclo de longitud 20.
Hacemos un ciclo de cada uno
ide 0 a través de input-1. (Esto significa queisiempre es uno menos que el número real que estamos considerando).Utilizando
-~icomo acceso directo parai+1,if-~i%20<16:comprueba sii+1, mod 20, es 15 o menos. (Si son de 16 a 19, Buzz Lightyear está presente y no queremos generar nada).Dentro de la declaración if, queremos imprimir
To infinity and beyond!en cada múltiplo de 20, es decir, cada vezi%20es 19. (Recuerde queies uno menos que el número real). Dadoi%20que nunca será mayor que 19,i%20/19será 1 en el deseado caso, <1 de lo contrario. Python 2, convenientemente, trunca los flotadores cuando se multiplica por cadenas, por lo quei%20/19*"..."da la cadena completa sii%20es 19, de lo contrario"".Si se aplica el caso anterior, no imprimimos nada más. Pero si la primera expresión es
""(que es falsa), usamosorpara continuar. Las expresiones paraFizz,Buzzy la introducción se calculan de manera similar a la anterior y se suman.Finalmente, si ninguno de estos casos aplica, imprimimos el número mismo con
-~i.fuente
05AB1E ,
979390 bytesPruébalo en línea!
Explicación por venir después de más golf.
Versión alternativa de 97 bytes
fuente