Wir haben alle von dem alten Fizz Buzz-Problem gehört, aber was passiert, wenn Sie versuchen, es mit mehr Faktoren anzuwenden? Fizz Buzz Crackle Pop!
Die Herausforderung
Schreiben Sie ein vollständiges Programm , das eine Ganzzahl- Eingabe n , dann n Tupel mit einer Ganzzahl und einer Zeichenfolge und dann eine weitere Ganzzahl (> 1) k als solche verwendet:
n int1 str1 int2 str2 (...) intn strn k
Sie können diese Zeile entweder über die Befehlszeile oder über STDIN übernehmen.
Dann wird für alle ganzen Zahlen 1 bis k, wenn es von einem teilbaren INT1 , INT2 ... INTn , all entsprechenden Ausgang str s in der Eingabereihenfolge, gefolgt von einem Zeilenvorschub. Wenn dies nicht der Fall ist, geben Sie einfach die Ganzzahl gefolgt von einer neuen Zeile aus.
Zum Beispiel mit Eingabe
3 2 Fizz 3 Buzz 5 Crackle 10
wir bekommen
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Aber mit Eingabe (beachten Sie die Auftragsänderung)
3 3 Buzz 2 Fizz 5 Crackle 10
wir bekommen
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
Optionaler nachfolgender Zeilenumbruch ist zulässig.
Der kürzeste Code in Bytes gewinnt.
Bearbeitungen:
Offensichtlich habe ich viel verpasst, sorry.
- Eingaben von der
Konsole und STDIN, alles andere erhältüberall+5 Bytes (: c) - Vollständige Programme bitte.
- Nehmen Sie nicht leere Zeichenfolgen für strs an
- Keine Garantie für die Eindeutigkeit von Ints
Beispiel für ein C ++ - Programm (auf 20 begrenzt, weil ich faul bin):
#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
.Antworten:
05AB1E , 28 Bytes
Probieren Sie es online aus!
Oder mit einem anderen Eingabeformat:
05AB1E , 16 Bytes
Probieren Sie es online aus!
quelle
JavaScript (ES6), 90 Byte
Erzeugt einen führenden Zeilenumbruch.
Prüfung
Code-Snippet anzeigen
quelle
Python 2 , 98 Bytes
Probieren Sie es online aus!
quelle
C ++, 194 Bytes
Ungolfed:
quelle
x%atoi(a[i])
nicht negativ sein kann, überprüfen Sie es einfachx%atoi(a[i])<1
.p'\n'
:)PHP, 99 Bytes
Basierend auf der FizzBuzz-Antwort von primo :
õ
ist chr (245), eine etwas invertierte Newline.ignoriert das erste Argument; laufen mit
-nr
.quelle
JavaScript (ES6),
10597 ByteNimmt eine Karte von Paaren m (Ganzzahl, Zeichenfolge) und einer Ganzzahl k auf . Kommt mit einem nachgestellten Zeilenumbruch.
Hier ist eine nicht rekursive Version (105 Byte), die jedoch keinen nachgestellten Zeilenumbruch ergibt.
Probieren Sie es online aus!
quelle
Java, 331 Bytes
Weil Java.
Dies ist die vollständige Klasse, die dafür erforderlich ist. Um es auszuführen, müssen Sie die Methode jedoch
x
für eine vorhandene Instanz von aufrufenA
. Zum Testen habe ich unten eine ausführbare Befehlszeilenklasse angegeben, die teilweise nicht golfed ist.quelle
gestapelt , 85 Bytes
Probieren Sie es online aus! Alternativ 86 Bytes:
quelle
Gleichstrom , 121 Bytes
Die Eingabe erfolgt in 3 separaten Zeilen, wobei die erste Zeile die Ganzzahl enthält
n
, die zweite dieint str
Tupel mit den in eckigen Klammern ([]
) eingeschlossenen Zeichenfolgen enthält und die dritte Zeile aus der Ganzzahl bestehtk
. Zum Beispiel3 2 Fizz 3 Buzz 5 Crackle 10
könnte eingegeben werden als:Probieren Sie es online aus!
Oder Eingaben in einer anderen Reihenfolge vornehmen:
Gleichstrom , 118 Bytes
Dies erfolgt in einer anderen Reihenfolge, jedoch in einer einzelnen Zeile im Format
Zum Beispiel
3 2 Fizz 3 Buzz 5 Crackle 10
würde eingegeben werden als:Probieren Sie es online aus!
quelle