Wszyscy słyszeliśmy o starym problemie Fizz Buzz, ale co się stanie, gdy spróbujesz zastosować go z większą liczbą czynników? Fizz Buzz Crackle Pop!
Wyzwanie
Dodaj pełny program , który zajmuje całkowitą wejście n , a n krotki zawierający całkowitą i łańcuch, a następnie innej liczby całkowitej (> 1) k, w następujący sposób:
n int1 str1 int2 str2 (...) intn strn k
Możesz pobrać tę linię z wiersza poleceń lub STDIN.
Następnie, dla wszystkich liczb całkowitych od 1 do k, jeżeli jest podzielna przez żadną z INT1 , int2 ... INTN , wyjście wszystko odpowiada str ów w kolejności wprowadzania, a następnie linią. Jeśli tak nie jest, po prostu wypisz liczbę całkowitą, po której następuje nowa linia.
Na przykład z wejściem
3 2 Fizz 3 Buzz 5 Crackle 10
dostajemy
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Ale z wejściem (zauważ zmianę zamówienia)
3 3 Buzz 2 Fizz 5 Crackle 10
dostajemy
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
Opcjonalny znak nowej linii jest dopuszczalny.
Najkrótszy kod w bajtach wygrywa.
Edycje:
Oczywiście przepraszam bardzo.
- Wejścia z
konsoli i STDIN, wszystko inne dostaje +5 bajtów (: c) wdowolnym miejscu - Proszę o pełne programy.
- Załóżmy, że ciągi są niepuste
- Brak gwarancji wyjątkowości int
Przykładowy program C ++ (ograniczony do 20, ponieważ jestem leniwy):
#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
.Odpowiedzi:
05AB1E , 28 bajtów
Wypróbuj online!
Lub z innym formatem wejściowym:
05AB1E , 16 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 90 bajtów
Generuje wiodącą nową linię.
Test
Pokaż fragment kodu
źródło
Python 2 , 98 bajtów
Wypróbuj online!
źródło
C ++, 194 bajty
Nie golfowany:
źródło
x%atoi(a[i])
nie może być ujemny, po prostu sprawdźx%atoi(a[i])<1
.p'\n'
:)PHP, 99 bajtów
Oparty na odpowiedzi FizzBuzz firmy primo :
õ
to chr (245), nieco odwrócony nowy wiersz.ignoruje pierwszy argument; biegać z
-nr
.źródło
JavaScript (ES6),
10597 bajtówPobiera mapę par m (liczba całkowita, ciąg) i liczba całkowita k . Pochodzi z nowej linii końcowej.
Oto wersja nierekurencyjna (105 bajtów), ale nie zawiera końcowego nowego wiersza.
Wypróbuj online!
źródło
Java, 331 bajtów
Ponieważ Java.
Jest to pełna klasa wymagana do tego. Jednak aby go uruchomić, musisz wywołać metodę
x
w istniejącej instancjiA
. Dla celów testowych podałem poniżej możliwą do uruchomienia klasę wiersza poleceń, która jest częściowo pozbawiona golfa.źródło
ułożone w stos , 85 bajtów
Wypróbuj online! Alternatywnie 86 bajtów:
źródło
dc , 121 bajtów
Bierze dane wejściowe w 3 oddzielnych wierszach, pierwszy wiersz zawiera liczbę całkowitą
n
, drugi zawieraint str
krotki z ciągami zamkniętymi w nawiasach kwadratowych ([]
), a trzeci wiersz składa się z liczby całkowitejk
. Na przykład3 2 Fizz 3 Buzz 5 Crackle 10
można wprowadzić jako:Wypróbuj online!
Lub przyjmowanie danych wejściowych w innej kolejności:
dc , 118 bajtów
To pobiera dane wejściowe w innej kolejności, ale w jednym wierszu w formacie
Na przykład
3 2 Fizz 3 Buzz 5 Crackle 10
można wprowadzić jako:Wypróbuj online!
źródło