Todos nós já ouvimos falar do antigo problema do Fizz Buzz, mas o que acontece quando você tenta aplicá-lo com mais fatores? Fizz Buzz Crackle Pop!
O desafio
Escreva um programa completo que use uma entrada inteira n , depois n tuplas contendo um número inteiro e uma sequência de caracteres e, em seguida, outro número inteiro (> 1) k, como tal:
n int1 str1 int2 str2 (...) intn strn k
Você pode pegar essa linha na linha de comando ou no STDIN.
Então, para todos os números inteiros 1 a k, se é divisível por qualquer um dos int1 , int2 ... intn , imprima todos os str s correspondentes na ordem de entrada, seguidos por uma nova linha. Se não estiver, basta gerar o número inteiro, seguido por uma nova linha.
Por exemplo, com entrada
3 2 Fizz 3 Buzz 5 Crackle 10
Nós temos
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Mas com entrada (observe a alteração na ordem)
3 3 Buzz 2 Fizz 5 Crackle 10
Nós temos
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
A nova linha à direita opcional é aceitável.
O código mais curto em bytes vence.
Editar% s:
Obviamente, perdi muito, desculpe.
- Entradas do
console e do STDIN, qualquer outra coisa recebe +5 bytes (: c) emqualquer lugar - Programas completos, por favor.
- Assumir strings não vazias para strs
- Nenhuma garantia para exclusividade de ints
Exemplo de programa C ++ (limitado a 20 porque sou preguiçoso):
#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
.Respostas:
05AB1E , 28 bytes
Experimente online!
Ou com um formato de entrada diferente:
05AB1E , 16 bytes
Experimente online!
fonte
JavaScript (ES6), 90 bytes
Gera uma nova linha líder.
Teste
Mostrar snippet de código
fonte
Python 2 , 98 bytes
Experimente online!
fonte
C ++, 194 bytes
Ungolfed:
fonte
x%atoi(a[i])
não puder ser negativo, verifiquex%atoi(a[i])<1
.p'\n'
:)PHP, 99 bytes
Baseado na resposta do primo no FizzBuzz :
õ
é chr (245), uma nova linha um pouco invertida.ignora o primeiro argumento; corra com
-nr
.fonte
JavaScript (ES6),
10597 bytesToma em um mapa de pares m (inteiro, string) e um inteiro k . Vem com uma nova linha à direita.
Aqui está uma versão não recursiva (105 bytes), mas não gera uma nova linha à direita.
Experimente online!
fonte
Java, 331 bytes
Porque Java.
Esta é a classe completa necessária para isso. No entanto, para executá-lo, você deve chamar o método
x
em uma instância existente deA
. Para fins de teste, forneço uma classe executável da linha de comando abaixo, que é parcialmente desfeita.fonte
empilhados , 85 bytes
Experimente online! Como alternativa, 86 bytes:
fonte
dc , 121 bytes
Recebe entrada em 3 linhas separadas, a primeira linha contendo o número inteiro
n
, a segunda abrigando asint str
tuplas com as cadeias entre colchetes ([]
) e a terceira linha consiste no número inteirok
. Por exemplo,3 2 Fizz 3 Buzz 5 Crackle 10
poderia ser inserido como:Experimente online!
Ou recebendo informações em uma ordem diferente:
dc , 118 bytes
Isso leva a entrada em uma ordem diferente, mas em uma única linha no formato
Por exemplo,
3 2 Fizz 3 Buzz 5 Crackle 10
seria inserido como:Experimente online!
fonte