W tradycyjnym FizzBuzz użytkownik jest proszony o wydrukowanie liczb od 1 do 100, ale zamienia każdą wielokrotność 3 na „Fizz”, każdą wielokrotność 5 na „Buzz” i każdą wielokrotność zarówno 3, jak i 5 (tj. 15) na „ FizzBuzz ”.
Jednak jako ankieter zła wymyśliłem własną pokręconą wersję FizzBuzz, którą postanowiłem nazwać BizzFuzz i dać wam w wywiadzie kodowym.
Zasady gry są następujące:
Wydrukuj każdy numer od 1 do 100, chyba że numer spełnia jeden z poniższych warunków.
- Jeśli liczba jest podzielna przez 4, wydrukuj „Fizz”.
Jeśli liczba jest podzielna przez 5, wydrukuj „Buzz”.
Jeśli liczba jest podzielna przez 4, ale liczba bezpośrednio po jest podzielna przez 5, wydrukuj „FizzBuzz” zamiast „Fizz” i regularnie drukuj następny numer.
Jeśli liczba jest podzielna przez 5, ale liczba bezpośrednio po jest podzielna przez 4, wydrukuj „BuzzFizz” zamiast „Buzz” i regularnie drukuj następny numer.
Jeśli liczba znajduje się bezpośrednio przed liczbą podzielną przez 4 i 5, wydrukuj „Bizz”.
Jeśli numer jest natychmiast po liczbowo zarówno podzielna przez 4 i 5 print „Fuzz”.
Jeśli liczba jest podzielna przez 4 i 5, wydrukuj „BizzFuzz”.
Wygrywa najkrótszy kod implementujący wszystkie te reguły w dowolnym języku.
źródło
Python, 114
Oryginalne rozwiązanie ( 131 ):
źródło
Python 2, 131
źródło
r
obliczania go mniejszą liczbą znaków, c) umieszczenia wszystkiego w jednym wierszu:r,F,B,Z,I=1,'Fizz','Buzz','Fuzz','Bizz'\nfor i in range(1,101):a,b=i%4,i%5*4;print~-r and i or{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z}.get(a+b,i);r=3!=a+b!=16
print 1!=a+b!=4
to diabelskie!exec
/eval
Kombi jest diaboliczny;)print{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z,1:i,4:i}.get(a+b,i)
Niespełniona implementacja referencyjna w Pythonie, która implementuje dosłownie każdą regułę (420 znaków):
źródło
Python, 150
To jest pochodna odpowiedzi minitech (wcześniejszej), ale wycisnąłem z niej wystarczająco dużo, aby stworzyć własną:
Wersja z degolfem nie jest o wiele bardziej czytelna, ale ten,
r
którego używał minitech, jest uruchamiany tylko wtedy, gdy przy następnej iteracji suma jest równa luba,b
albo , co jest równoważne, więc pojawi się tylko w tych okolicznościach. Możliwe było więc usunięcie przypisania i obliczenia oraz wyprowadzenie go z bieżącej wartości użycia i :1,0
0,4
i%4 or i%5 == 0
r
i
a
b
Zawiera także sugestie @ WolframH.
źródło
[1,4]
(i użyj(1,4)
lub{1,4}
oprócz) i wcześniej{
.[]
odstępów. Zastanawiałem się, dlaczego użyłeś{}
swojej oryginalnej odpowiedzi.R: 170 znaków
źródło
JavaScript 127 bajtów
Wyjaśnienie
źródło
Tcl, 185 znaków
źródło
while
pętle można zastąpićtime
konstruktami zapisującymi bajty