Recrie '99 garrafas de cerveja na parede '.
A saída desejada é esta:
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.
Mostre-me como você resolveria isso com sua linguagem de programação favorita. O uso mais criativo de um idioma vence.
popularity-contest
kolmogorov-complexity
Nick Berardi
fonte
fonte
Respostas:
Perl (410 caracteres)
Já existe um site dedicado a este concurso:
Uma das soluções Perl seria muito, muito difícil de vencer em termos de criatividade, diz:
[bottles.pl]
Aqui está o link para o arquivo original .
fonte
\b
'remover' caracteres indesejados também é um pouco decepcionante.Brainf *** (1.509)
Imaginei que poderia superar essa resposta não apenas produzindo 9 garrafas de cerveja em vez de 1, mas também usando apenas 7 caracteres diferentes no código.
Eu tenho que admitir, porém, há um erro no código (talvez você possa descobrir como corrigi-lo para mim?) E ele não imprime a frase final.
Go to the store and buy some more, 99 bottles of beer on the wall.
Mas , fora isso, ele funciona tão bem quanto os programas feitos nessas linguagens de programação sissy que todo mundo parece gostar de usar.fonte
braindrunk
?Funciton
Eu escrevi isso outro dia. :) (Imagens: início e término )
Como isso fica feio no StackExchange devido ao espaçamento extra de linhas, considere executar o seguinte código no console JavaScript do navegador para corrigir isso:
$('pre').css('line-height',1)
fonte
Console jQuery + FireBug
;)
fonte
eval($($('code')[8]).text().replace(/print/g,'console.log'))
<del> (também conhecido como roubo) </del>? Ele imprime a letra inteira da música. : PHQ9 + (1 caractere)
É certo que não é uma língua completa de Turing, mas isso ainda conta
fonte
Quem disse que o C # tinha muita cerimônia? Quem quer que fosse, nunca esteve tão certo.
fonte
ilivewithian
disse antes do código dele?C
Este programa está gerando o texto completo da música como sequência única, usando o pré-processador. O código C real apenas gera a string assim construída. Chamar
strings
o executável gerado revelará o texto completo da música no executável.fonte
C # (
312310304 caracteres)fonte
C #
Não pretende ser curto, mas talvez isso conte como criativo?
Note que esta é apenas uma afirmação :)
fonte
Definitivamente não se qualifica como criativo, mas é feito a partir da linha de comando com um único comando.
fonte
Haskell,
272,250, 243 caracteresfonte
Windows PowerShell (198)
Bastante direto.
Estou usando um filtro para as garrafas de cerveja, já que
function
é mais longa e a invocação precisa de parênteses em qualquer caso. A detecção plural (!!--$_
) primeiro diminui o número de garrafas por um (portanto, plural é qualquer coisa que não seja zero), lança-o para booleano e o nega com o primeiro!
e nega-o novamente, para que agora tenhamos um booleano que descreve se o número precisa de um plural ou não. Isso é convertido implicitamente em um número inteiro ao multiplicar a sequência.Quebras de linha em linha são divertidas.
Gerando mais linhas do que o necessário e cortando depois também.
fonte
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."
corrige isso. Totaliza 199 caracteres. (Adicione uma quebra de linha depois de$w
antes"
)Enrolar 19 caracteres
(requer conexão com a internet)
fonte
Anti-golfe quase correto do super programador C que está aprendendo Perl?
fonte
/usr/bin/env perl
?JavaScript (
216228215)Edit: Teve uma única "1 garrafa de cerveja" na versão inicial, a 3ª versão foi completamente reescrita, observe truques legais como
(a||99)
obter 99 na última linha,(a-1?'s':'')
tornando plural para todos os casos, masa==1
sem a necessidade do desperdício==
, e definindo o valor deb
dentro de uma declaração em que é usada.fonte
"no more bottles of beer on the wall, no more bottles..."
- Veja: 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)
C
Eu devo ter esquecido essa pergunta, então aqui está uma versão que eu postei como resposta em outro lugar. É uma versão baseada em C quine. Compile e corra para obter a próxima linha de música. Repita até ficar entediado. Se o código indicar "Hora de ir ...", digite o número de cervejas na próxima vez que executar como argumento da linha de comando.
fonte
Javascript (285)
Isso pressupõe que existe uma função chamada print, para gerar uma string.
fonte
b();
. Supondo que haja uma funçãob()
que imprima 99 garrafas de cerveja na parede. :)document.writeln
trabalho.alert
como saída,prompt
como entrada variável econfirm
como entrada booleana. Eles são péssimos na interface do usuário, mas são as funções IO de bloqueio padrão.alert
eprint
têm o mesmo comprimento, portanto, seu código deve ser aproximadamente igual.Esquema (270)
Sem espaço em branco:
Com espaço em branco:
fonte
Python - muito
Amidoinitrito?
Referência adicional (me ajudou muito com o código): http://www.youtube.com/watch?v=Y0Z0raWIHXk
fonte
Python (318)
Eu encontrei essa maneira de tornar um programa Python mais curto :)
fonte
Rebmu - 167 caracteres
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]]
Provavelmente poderia raspar alguns caracteres, essa foi apenas uma primeira tentativa. :)
Aqui está o equivalente Rebol, que tem a taquigrafia fervida. Ainda bastante competitivo, especialmente considerando a clareza:
Código fonte comentado disponível no GitHub
fonte
PHP:
285240233231 caracteresSaída aqui: http://ideone.com/5fQmcd
fonte
Python, 241 caracteres
fonte
Ruby, 274 bytes
Ainda bastante novo para Ruby, realmente apenas brincando
fonte
C # (299 caracteres)
fonte
JavaScript (7 funções)
Não jogou golfe. Isso pretende ser uma implementação (principalmente) funcional da música.
fonte
Go (263)
fonte
PHP - 252 bytes
Espero comprimir mais amanhã.
fonte
Ruby 1.9.2p136: 223
Eu não sou covarde, você pode ler o meu; p
fonte
SQL (Oracle)
Sem contagem de caracteres, eu não joguei. Só achei isso uma maneira divertida de fazer isso.
fonte