Todos hemos oído hablar del viejo problema de Fizz Buzz, pero ¿qué sucede cuando intentas aplicarlo con más factores? Fizz Buzz Crackle Pop!
El reto
Escriba un programa completo que tome una entrada entera n , luego n tuplas que contengan un entero y una cadena, luego otro entero (> 1) k, como tal:
n int1 str1 int2 str2 (...) intn strn k
Puede tomar esta línea desde la línea de comando o STDIN.
Entonces, para todos los números enteros 1 a k, si es divisible por cualquiera de INT1 , INT2 ... INTN , la salida de todo correspondiente str s en el orden de entrada, seguido de una nueva línea. Si no es así, simplemente genera el número entero, seguido de una nueva línea.
Por ejemplo, con entrada
3 2 Fizz 3 Buzz 5 Crackle 10
obtenemos
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Pero con entrada (observe el cambio de orden)
3 3 Buzz 2 Fizz 5 Crackle 10
obtenemos
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
Nueva línea final opcional es aceptable.
El código más corto en bytes gana.
Ediciones:
Obviamente me he perdido mucho, lo siento.
- Entradas de la
consola y STDIN, cualquier otra cosa obtiene +5 bytes (: c) encualquier lugar - Programas completos por favor.
- Asumir cadenas no vacías para strs
- No hay garantías para la unicidad de las entradas.
Programa de muestra C ++ (limitado a 20 porque soy vago):
#include <iostream>
#include <string>
using namespace std;
int main() {
string names[20];
int mods[20], n, max;
cin >> max >> n;
for (int i=0; i<n; i++) {
cin >> mods[i] >> names[i];
}
for (int i=1; i<=max; i++) {
bool found = false;
for (int j=0; j<n; j++) {
if (i % mods[j] == 0) {
found = true;
cout << names[j];
}
}
if (!found)
cout << i;
cout << endl;
}
return 0;
}
Generalized Fizz Buzz
.Respuestas:
05AB1E , 28 bytes
Pruébalo en línea!
O con un formato de entrada diferente:
05AB1E , 16 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 90 bytes
Genera una nueva línea líder.
Prueba
Mostrar fragmento de código
fuente
Python 2 , 98 bytes
Pruébalo en línea!
fuente
C ++, 194 bytes
Sin golf:
fuente
x%atoi(a[i])
no puede ser negativo, simplemente verifiquex%atoi(a[i])<1
.p'\n'
:)PHP, 99 bytes
Basado en la respuesta FizzBuzz de primo :
õ
es chr (245), una nueva línea un poco invertida.ignora el primer argumento; correr con
-nr
.fuente
JavaScript (ES6),
10597 bytesToma un mapa de pares m (entero, cadena) y un entero k . Viene con una nueva línea final.
Aquí hay una versión no recursiva (105 bytes), pero no produce una nueva línea final.
Pruébalo en línea!
fuente
Java, 331 bytes
Porque Java
Esta es la clase completa requerida para esto. Sin embargo, para ejecutarlo, debe llamar al método
x
en una instancia existente deA
. En aras de las pruebas, he proporcionado una clase ejecutable de línea de comandos a continuación, que está parcialmente sin golf.fuente
apilado , 85 bytes
Pruébalo en línea! Alternativamente, 86 bytes:
fuente
cc , 121 bytes
Toma entrada en 3 líneas separadas, la primera línea que contiene el número entero
n
, la segunda que contiene lasint str
tuplas con las cadenas entre corchetes ([]
), y la tercera línea consiste en el número enterok
. Por ejemplo,3 2 Fizz 3 Buzz 5 Crackle 10
podría ingresarse como:Pruébalo en línea!
O tomando la entrada en un orden diferente:
cc , 118 bytes
Esto toma la entrada en un orden diferente, pero en una sola línea en el formato
Por ejemplo,
3 2 Fizz 3 Buzz 5 Crackle 10
se ingresaría como:Pruébalo en línea!
fuente