Wyzwanie
Napisz program, który wyśle tekst do 99 butelek piwa, ale zamiast „piwa” wyślij „fizz”, jeśli liczba butelek na ścianie jest wielokrotnością 3, „brzęczenie”, jeśli jest wielokrotnością 5, i „fizzbuzz”, jeśli jest to wielokrotność 3 i wielokrotność 5. Jeśli liczba butelek na ścianie nie jest wielokrotnością 3 lub 5, po prostu wyślij „piwo” jak zwykle.
tekst piosenki
99 bottles of fizz on the wall, 99 bottles of fizz.
Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer.
Take one down and pass it around, 97 bottles of beer on the wall.
97 bottles of beer on the wall, 97 bottles of beer.
Take one down and pass it around, 96 bottles of fizz on the wall.
96 bottles of fizz on the wall, 96 bottles of fizz.
Take one down and pass it around, 95 bottles of buzz on the wall.
95 bottles of buzz on the wall, 95 bottles of buzz.
Take one down and pass it around, 94 bottles of beer on the wall.
....
3 bottles of fizz on the wall, 3 bottles of fizz.
Take one down and pass it around, 2 bottles of beer on the wall.
2 bottles of beer on the wall, 2 bottles of beer.
Take one down and pass it around, 1 bottle of beer on the wall.
1 bottle of beer on the wall, 1 bottle of beer.
Go to the store and buy some more, 99 bottles of fizz on the wall.
To jest gra w golfa , więc wygrywa najkrótsza wersja w każdym języku.
code-golf
string
kolmogorov-complexity
musicman523
źródło
źródło
Odpowiedzi:
Python 2 ,
263253245 bajtówWypróbuj online!
źródło
['ab','cd'][x]
można przepisać jako'acbd'[x::2]
, aby zaoszczędzić trochę bajtówC (GCC),
276274 bajtówDzięki Neil za uratowanie dwóch bajtów!
Kto nie lubi niedopasowanych nawiasów w rozwinięciach makr?
Nie golfowany:
Zobacz na żywo na Coliru!
Alternatywna wersja (276 bajtów)
źródło
#define w" on the wall"
na*w=" on the wall"
.#define w
z*w=
uratować bajtów tam. Szczerze mówiąc, nie jestem zbyt obeznany z golfem C, ale domyślam się, że tworzyw
on domyślnie zdefiniowany globalny char *.#define
dw
jest literałem łańcuchowym, który jest automatycznie wklejany z sąsiednimi literałami łańcuchowymi. Jeśliw
jest zmienną, muszę użyć faktycznego formatowania łańcucha w środkuprintf
.Röda , 273 bajtów
Wypróbuj online!
Będzie grał w golfa rano.
źródło
PHP, 242 bajtów
Wypróbuj online!
PHP, 244 bajtów
Wypróbuj online!
użyj funkcji strtr
PHP, 245 bajtów
Wypróbuj online!
użyj funkcji Anonimowy w ciągu, aby uzyskać zależność od liczby całkowitej
Rozszerzony
źródło
function x($n){return"$n bottle".($n-1?s:'')." of ".(($n%3?'':fizz).($n%5?'':buzz)?:beer);}$y=" on the wall";for($b=99;$b;){$c=x($b);echo"$c$y, $c.↵",--$b?"Take one down and pass it around":"Go to the store and buy some more",", ".x($b?:99)."$y.↵↵";}
. :)use
w połączeniu z anonimową funkcją, która oszczędza 1 bajt w tej wersji05AB1E ,
151146143 bajtówWypróbuj online!
źródło
SOGL ,
136135134133131 131 bajtówPrzede wszystkim trzecia funkcja:
Pierwsza funkcja:
Druga funkcja:
I główna część:
Straciłem kilka bajtów z powodu błędu, który
O
umieszcza nowy wiersz przed i po nim (I jakoś to wraca do V0.9 (to jest kod V0.11))źródło
Java,
344340339 bajtów(-4 bajty po grze w golfa fizzbuzz; -1 bajtowe usuwanie zbłąkanych białych znaków)
Nieznacznie pozbawiony golfa (użycie wcięcia 1 spacji, aby wyeliminować przewijanie w poziomie):
źródło
JavaScript (ES6),
316309 bajtówJest to pełny program, a nie funkcja. Nic bardzo kreatywnego, to tylko naiwne podejście (stąd bajt!). Używam
console.log()
zamiast,alert()
ponieważ wiele przeglądarek ma ograniczenie liczby znaków, które można wyświetlić za pomocąalert()
. Pamiętaj, że wszystkie białe znaki i znaki nowej linii są konieczne.Nie golfowany:
Oto Snippet:
BTW, dzięki tej odpowiedzi zdobyłem brązową odznakę w golfowym kodzie ! Nigdy nie myślałem, że kiedykolwiek to osiągnę (choć nie jest to duże osiągnięcie).
źródło
d
funkcja nie potrzebuje żadnych()
znaków, ponieważ?:
jest skojarzona z prawą stroną, ale możesz zaoszczędzić jeszcze więcej bajtówd=a=>(a%3?"":"fizz")+(a%5?"":"buzz")||"beer"
.Siatkówka , 230 bajtów
Wypróbuj online! Wyjaśnienie:
Wstawia 99
_
s.Zmienia wszystkie oprócz ostatniego
_
na ciągTake one down and pass it around, $.'#.¶¶$.'#, $.'.¶
, gdzie¶
jest nowa linia i$.'
liczba pozostałych znaków podkreślenia. To skutecznie odlicza od 98 do 1.Dodaje pierwszy wiersz pierwszego wiersza w formacie „kompaktowym”.
Dodaje drugi wiersz ostatniego wersetu. Dlaczego potrzebuję przeskakiwać przez obręcze, żeby użyć
_
nie wiem, ale$
wydaje się, że pasują dwa razy, więc nie mogę tego użyć. Domyśl.Zastępuje ciąg, który pojawia się kilka razy w wersecie.
To dopasowuje liczby całkowite w wersetach i sufikuje odpowiednią butelkę (butelkę), i ponownie rozwija się do jedności, przygotowując się do wyboru napoju. (W
99
ten sposób zapisuję 1 bajt na s.)Zastąp dokładne wielokrotności odpowiednim napojem.
źródło
sed ,
468459456 bajtówWypróbuj online!
Wymaga
-r
flagi.Wyjaśnienie
Przestrzeń chwyt posiada wzór powtarzających dwóch liniach, z numerami reprezentowane
[A-I][0-9]
(osobne cyfry dla dziesiątek i jedynek) i rodzaj napoju reprezentowaneX*Y*Z
, gdzieX
śledzi-N mod 3
, iY
od-N mod 5
.Przy każdej kolejnej iteracji liczby są zmniejszane, a
X
s iY
s aktualizowane. Następnie przestrzeń wstrzymania zostaje skopiowana do przestrzeni wzoru, zamieniona w linie utworu i wydrukowana.źródło
C,
349345344 bajtówCóż, proszę bardzo. Zajęło to godzinę.
Wypróbuj online!
źródło
JavaScript (ES6),
236234233232 bajtyPróbny
Nie golfił
źródło
Rubinowy , 261 bajtów
Wypróbuj online!
źródło
shortC ,
314312 bajtówNiestety nie ma wyjaśnienia, ale zupełnie zapomniałem, jak to działa.
źródło
Węgiel drzewny ,
307297 bajtówWypróbuj online!
TAK MOŻEMY! Link do pełnej wersji, jestem pewien, że można w nią grać w golfa.
źródło
⁺
wygląda podejrzanie ...tcl, 298
próbny
źródło