W związku z wieloma (dwoma?) Wyzwaniami związanymi z FizzBuzz opublikowanymi niedawno na PPCG, miałem ochotę wymyślić własne. Ujrzeć...
Fizz Buzz Astral
Napisz program lub funkcję, która pobiera liczbę całkowitą ni drukuje FizzBuzzdla dowolnej liczby podzielnej przez 15, Fizzdla dowolnej liczby podzielnej przez 3, i Buzzdla dowolnej liczby podzielnej przez 5, do (włącznie) n. Po wyjściu dla wszystkich imusi następować nowy wiersz. Ale jest zwrot akcji!
Za każdym razem, gdy drukujesz po raz trzeci Buzz, Buzz Lightyear w końcu rozpoznaje twoje połączenie i zawiesza się w twoim programie. Następnie przedstawia się - ale od czasu katastrofy wylądował, niektóre z jego wypowiedzi mieszają się z wynikami twojego programu:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(czyli tylko Dołącz Lightyear, Space Ranger, Universe Protection Unit.do Buzzlub FizzBuzz- bez względu na to, że masz wyświetlane inaczej Uwaga wiodącej przestrzeni).
Jednak Buzz Lightyear, który jest Kosmicznym Łowcą, ma bardzo ostry słuch, więc drukowanie FizzBuzzbędzie się liczyło do twojej Buzzliczby .
Następnie Buzz pozostaje w pobliżu, aby obronić komputer przed całym tym złym wynikiem, dopóki nie trafisz innej liczby, która jest podzielna przez 5 (lub 15, ponieważ one również są podzielne przez 5). Oznacza to, że dopóki nie będziesz musiał drukować Buzz(lub FizzBuzz) ponownie, nic nie drukujesz.
Gdy w końcu osiągniesz ten warunek, Buzz odchodzi:
To infinity and beyond!
Przykładowy wynik
Jest to oczekiwany wynik dla n = 25: (zauważ, jak przeskakuje od 16 do 19)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
To infinity and beyond!
Fizz
22
23
Fizz
Buzz
Zasady
Opcjonalny znak nowej linii jest dopuszczalny.
To jest kod golfowy; jako taki, najkrótszy kod w bajtach wygrywa.
Załóżmy, że podane njest prawidłowe i większe niż lub równe 15 (to jest, gdy wyzwanie najpierw odbiega od standardowego fizzbuzz)
Buzz wita się, gdy „Licznik buzzów” (który liczy oba Buzzi FizzBuzz) osiągnie 3; odchodzi, gdy drukowane jest następne Buzz(w tym znowu oba Buzzi FizzBuzz).
Liczba, w której odchodzi, nie jest wliczana do następnego „licznika buzzów”; zamiast tego powinieneś zacząć odliczanie Buzzes od 0. Na przykład program działający z n = 25(przykładowym wyjściem) powinien kończyć się „licznikiem buzza” równym 1, ponieważ tyle razy Buzzwydrukowano od ostatniego odejścia.
W przypadku nupadku między jednym z przyjazdów Buzza a jednym z jego odlotów (tzn. Nadal tam jest - nic nie drukujesz), spodziewane jest pełne zakończenie. Dlatego ostatnim wierszem wyników byłoby jego wprowadzenie
Standardowe luki są zabronione.
nznajdzie się on pomiędzy przybyciem Buzza Lightyeara a jego odejściem?