Odtwórz „99 butelek piwa na ścianie”.
Pożądane wyjście to:
99 bottles of beer on the wall, 99 bottles of beer.
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 beer on the wall.
96 bottles of beer on the wall, 96 bottles of beer.
Take one down and pass it around, 95 bottles of beer on the wall.
95 bottles of beer on the wall, 95 bottles of beer.
Take one down and pass it around, 94 bottles of beer on the wall.
....
3 bottles of beer on the wall, 3 bottles of beer.
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 beer on the wall.
Pokaż, jak rozwiązałbyś ten problem za pomocą swojego ulubionego języka programowania. Najbardziej kreatywne użycie języka wygrywa.
popularity-contest
kolmogorov-complexity
Nick Berardi
źródło
źródło
Odpowiedzi:
Perl (410 znaków)
Istnieje już witryna poświęcona temu konkursowi:
Jedno z rozwiązań Perla byłoby bardzo trudne do pokonania pod względem kreatywności, czytamy:
[bottles.pl]
Oto link do oryginalnego pliku .
źródło
\b
„usuwania” niechcianych postaci jest również nieco rozczarowujące.Brainf *** (1,509)
Doszedłem do wniosku, że mogę przebijać tę odpowiedź, nie tylko tworząc 9 butelek piwa zamiast 1, ale także używając tylko 7 różnych znaków w kodzie.
Muszę jednak przyznać, że w kodzie jest błąd (może możesz wymyślić, jak to naprawić dla mnie?) I nie drukuje on ostatniego zdania,
Go to the store and buy some more, 99 bottles of beer on the wall.
ale poza tym działa tak samo dobrze, jak którykolwiek z programy stworzone w tych sissy językach programowania, których wszyscy inni lubią.źródło
braindrunk
?Funciton
Napisałem to innego dnia. :) (Zrzuty ekranu: początek i koniec )
Ponieważ wygląda to brzydko w StackExchange ze względu na dodatkowe odstępy między wierszami, rozważ uruchomienie następującego kodu w konsoli JavaScript przeglądarki, aby to naprawić:
$('pre').css('line-height',1)
źródło
jQuery + konsola FireBug
;)
źródło
eval($($('code')[8]).text().replace(/print/g,'console.log'))
<del> (aka. Stealing) </del>? Drukuje cały tekst piosenki. : PHQ9 + (1 znak)
Wprawdzie nie jest to kompletny język Turinga, ale to i tak się liczy
źródło
Kto powiedział, że C # miał zbyt wiele ceremonii? Kimkolwiek był, nigdy nie mieli tak racji.
źródło
ilivewithian
napisano przed jego kodem?do
Ten program generuje pełny tekst piosenki jako pojedynczy ciąg przy użyciu preprocesora. Rzeczywisty kod C po prostu wyświetla tak skonstruowany ciąg. Wywołanie
strings
wygenerowanego pliku wykonywalnego ujawni pełny tekst utworu w pliku wykonywalnym.źródło
C # (
312310304 znaków)źródło
DO#
Nie jest krótki, ale może to się liczy jako kreatywne?
Uwaga: to tylko jedno zdanie :)
źródło
Zdecydowanie nie kwalifikuje się jako twórczy, ale wykonuje się go z wiersza poleceń za pomocą jednego polecenia.
źródło
Haskell,
272,250, 243 znakówźródło
Windows PowerShell (198)
Dość bezpośredni.
Używam filtra do butelek piwa, ponieważ
function
jest dłuższy i wywołanie wymaga nawiasów. Wykrywanie liczby mnogiej (!!--$_
) najpierw zmniejsza liczbę butelek o jeden (więc liczba mnoga jest różna od zera), rzuca ją na wartość logiczną i neguje ją z pierwszą!
i ponownie ją neguje, więc teraz mamy wartość logiczną opisującą, czy liczba potrzebuje liczby mnogiej albo nie. Jest to następnie domyślnie rzutowane na liczbę całkowitą podczas mnożenia ciągu.Podziały linii są zabawne.
Odradza więcej linii niż jest to potrzebne, a potem również cofa się.
źródło
filter b{"$_ bottle$('s'*!!--$_) of beer"}(99..1|%{($_|b)+($w=' on the wall')+", $($_|b).";"Take one down and pass it around, $(--$_|b)$w. "})[0..196];"Go to the store and buy some more, $(99|b) $w."
naprawia to. Łącznie 199 znaków. (Dodaj podział wiersza po$w
wcześniej"
)Zwinąć 19 znaków
(wymaga połączenia z Internetem)
źródło
Prawie poprawna gra w golfa od niezwykle zapalonego nowego programisty C, który uczy się Perla?
źródło
/usr/bin/env perl
?JavaScript (
216228215)Edycja: Miałem jedną „1 butelkę piwa” w początkowej wersji, trzecia wersja jest całkowicie przepisana, zauważ fajne sztuczki, jak
(a||99)
dostać 99 w ostatnim wierszu,(a-1?'s':'')
tworząc liczbę mnogą dla każdego przypadku, alea==1
bez potrzeby marnotrawstwa==
i ustawiając wartość odb
wewnątrz instrukcji gdzie jest on używany.źródło
"no more bottles of beer on the wall, no more bottles..."
- Patrz: 99-bottles-of-beer.net/lyrics.htmlfor(o,e,n=100,t=" on the wall";n-->-1;)o=e+t+", "+e+".<br>"+(n>-1?"Take one down, pass it around, ":"Go to the store and buy some more, ")+(e=(0>n?99:n||"no more")+" bottle"+(1!=n?"s":"")+" of beer")+t+".<p>",99>n&&document.write(o)
do
Musiałem przegapić to pytanie, więc oto wersja, którą opublikowałem jako odpowiedź gdzie indziej. Jest to wersja oparta na quinie C. Skompiluj i uruchom, aby uzyskać następny wiersz piosenki. Powtarzaj, aż się nudzisz. Jeśli kod mówi „Czas iść ...”, wprowadź liczbę piw podczas następnego uruchomienia jako argument wiersza poleceń.
źródło
JavaScript (285)
Zakłada się, że istnieje funkcja o nazwie print, która wysyła ciąg znaków.
źródło
b();
. Zakładając, że istnieje funkcja,b()
która drukuje 99 butelek piwa na ścianie. :)document.writeln
Pracuje.alert
wyjścia z: jako dane wyjściowe,prompt
jako zmienne wejściowe iconfirm
jako dane logiczne. Ssają aż do interfejsu użytkownika, ale są standardowymi funkcjami blokującymi we / wy.alert
iprint
mają tę samą długość, więc kod powinien być mniej więcej równy.Program (270)
Brak białych znaków:
Z białymi znakami:
źródło
Python - dużo
Amidoinitrite?
Dodatkowe informacje (bardzo mi pomogło z kodem): http://www.youtube.com/watch?v=Y0Z0raWIHXk
źródło
Python (318)
Znalazłem taki sposób na skrócenie programu Python :)
źródło
Rebmu - 167 znaków
M N 99 Bdz[cb[n{ bottle}egN 1{s}{}{ of beer}]]loN[cb[b W{ on the wall}C{, }b P{.}lfEZ--n[Nm{Go to the store and buy some more}]{Take one down and pass it around}cBwPlf]]
Prawdopodobnie mógł ogolić kilka postaci, to była tylko pierwsza próba. :)
Oto odpowiednik Rebola, którego skrót jest ugotowany. Nadal dość konkurencyjny, szczególnie biorąc pod uwagę jasność:
Skomentowany kod źródłowy dostępny na GitHub
źródło
PHP:
285240233231 znakówWyjście tutaj: http://ideone.com/5fQmcd
źródło
Python, 241 znaków
źródło
Rubinowy, 274 bajty
Nadal całkiem nowy w Ruby, naprawdę po prostu się bawię
źródło
C # (299 znaków)
źródło
JavaScript (7 funkcji)
Nie grał w golfa. Ma to na celu (głównie) funkcjonalną implementację utworu.
źródło
Idź (263)
źródło
PHP - 252 bajtów
Mam nadzieję, że jutro trochę skompresuję.
źródło
Ruby 1.9.2p136: 223
Nie jestem tchórzem, możesz przeczytać moje; s
źródło
(Oracle) SQL
Brak liczby postaci, nie grałem w golfa. Właśnie znalazłem to świetny sposób, aby to zrobić.
źródło