Nous avons tous entendu parler du problème de Ol 'Fizz Buzz, mais que se passe-t-il lorsque vous essayez de l'appliquer avec plus de facteurs? Fizz Buzz Crackle Pop!
Le défi
Écrivez un programme complet qui prend une entrée entière n , puis n tuples contenant un entier et une chaîne, puis un autre entier (> 1) k, comme tel:
n int1 str1 int2 str2 (...) intn strn k
Vous pouvez prendre cette ligne à partir de la ligne de commande ou de STDIN.
Ensuite, pour tous les entiers 1 à k, s'il est divisible par l'un de int1 , int2 ... intn , sortez toutes les str correspondantes dans l'ordre d'entrée, suivi d'une nouvelle ligne. Si ce n'est pas le cas, sortez simplement l'entier, suivi d'une nouvelle ligne.
Par exemple, avec entrée
3 2 Fizz 3 Buzz 5 Crackle 10
on a
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Mais avec entrée (notez le changement de commande)
3 3 Buzz 2 Fizz 5 Crackle 10
on a
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
Un retour à la ligne facultatif est acceptable.
Le code le plus court en octets gagne.
Modifications:
Évidemment, j'ai raté beaucoup de choses, désolé.
- Entrées depuis la
console et STDIN, tout le reste obtient +5 octets (: c)n'importe où - Programmes complets s'il vous plaît.
- Supposons des chaînes non vides pour les chaînes
- Aucune garantie pour l'unicité des pouces
Exemple de programme C ++ (limité à 20 parce que je suis paresseux):
#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
.Réponses:
05AB1E , 28 octets
Essayez-le en ligne!
Ou avec un format d'entrée différent:
05AB1E , 16 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 90 octets
Génère une nouvelle ligne de premier plan.
Tester
Afficher l'extrait de code
la source
Python 2 , 98 octets
Essayez-le en ligne!
la source
C ++, 194 octets
Non golfé:
la source
x%atoi(a[i])
ne peut pas être négatif, vérifiez simplementx%atoi(a[i])<1
.p'\n'
:)PHP, 99 octets
Basé sur la réponse FizzBuzz de primo :
õ
est chr (245), un retour à la ligne un peu inversé.ignore le premier argument; courir avec
-nr
.la source
JavaScript (ES6),
10597 octetsPrend une carte des paires m (entier, chaîne) et un entier k . Livré avec une nouvelle ligne de fin.
Voici une version non récursive (105 octets), mais ne produit pas de nouvelle ligne de fin.
Essayez-le en ligne!
la source
Java, 331 octets
Parce que Java.
Il s'agit de la classe complète requise pour cela. Cependant, pour l'exécuter, vous devez appeler la méthode
x
sur une instance existante deA
. Pour des raisons de test, j'ai fourni ci-dessous une classe exécutable en ligne de commande, qui n'est pas entièrement golfée.la source
empilé , 85 octets
Essayez-le en ligne! Alternativement, 86 octets:
la source
dc , 121 octets
Prend l'entrée sur 3 lignes distinctes, la première ligne contenant l'entier
n
, la seconde abritant lesint str
tuples avec les chaînes entre crochets ([]
), et la troisième ligne se compose de l'entierk
. Par exemple,3 2 Fizz 3 Buzz 5 Crackle 10
pourrait être entré comme:Essayez-le en ligne!
Ou en prenant les informations dans un ordre différent:
dc , 118 octets
Cela prend l'entrée dans un ordre différent, mais sur une seule ligne au format
Par exemple,
3 2 Fizz 3 Buzz 5 Crackle 10
serait entré comme:Essayez-le en ligne!
la source