Sua linguagem de programação favorita acabou de fazer aniversário. Seja legal e cante a música Happy Birthday .
Claro que você deve conseguir isso escrevendo um programa nesse idioma. O programa não aceita entrada e grava o seguinte texto na saída padrão ou em um arquivo arbitrário:
Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear [your favourite programming language]
Happy Birthday to You
Você deve substituir a peça entre colchetes (e omitir os colchetes).
Este é um código de golfe - o código mais curto vence.
ATUALIZAR
Fico feliz que a pergunta tenha despertado grande interesse. Deixe-me adicionar algumas informações extras sobre pontuação. Como declarado originalmente, essa pergunta é um código de golfe, portanto, o código mais curto vencerá. O vencedor será escolhido no final desta semana (19 de outubro).
No entanto, também estou recompensando outros envios espirituosos com votos positivos (e incentivo todos a fazê-lo também). Portanto, embora este seja um concurso de código-golfe, respostas não tão curtas também são bem-vindas.
Resultados
Parabéns ao Optimizer , o vencedor deste concurso com sua submissão de 42 bytes de CJam .
fonte
Respostas:
CJam,
4642 bytesComo funciona:
Isso deixa a pilha da seguinte maneira no final do código:
que são impressos automaticamente para imprimir como
Experimente aqui (copie o código e execute-o)
fonte
LOLCODE: 109 (105 com ortografia "correta")
LOLCODE não é um ótimo idioma para o golfe, especialmente porque você perde toda a beleza e expressividade ao encurtar o código.
Teste usando loljs
Esta é a minha versão preferida, com 187 caracteres (espaços adicionados para maior clareza):
fonte
Aniversário de código de barras do Mathematica- - muitos bytes
Isso imprime os versos e os lê em voz alta.
StringReplace
substitui cada vírgula por uma NewLine. Os códigos de barras não podem conter caracteres de controle.fonte
10
código de barras (canto inferior direito), visto queBarcodeRecognize
foi introduzido no Mathematica 10. ^^TI-Basic, 53 bytes
Bem, como todo mundo está colocando sua linguagem de programação favorita, eu também poderia adicionar uma das minhas antigas favoritas. Passei muito tempo ao longo dos anos (antes de me formar em linguagens de programação reais) digitando comandos em uma janela com metade do tamanho de um telefone inteligente.
Minha calculadora não suporta letras minúsculas, e as únicas variáveis que podem ser strings são Str1, Str2 etc.
fonte
Sed,
6055 bytes(1 caractere adicionado porque não há como fazê
sed
-lo funcionar sem entrada.)Certamente não é um vencedor, postou a demonstrar
sed
rara 'ss///
recurso de substituir apenas o n º ocorrência.Sed (mais curto, mas não interessante): 52 caracteres
Exemplo de execução:
fonte
sed
respostas são sempre vencedores IMO :)sed
trabalho sem entrada.)”.C, 73 bytes
fonte
i++-3
. (Atualmente, o “Querido c” aparece na segunda linha.) (Ao usar uma única variável, gostaria de nomeá-lo “c”.)Python,
616059fonte
H="\nHappy Birthday to You"
eprint(H*3)[:59]+" Dear Python"+H
print
argumento.h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Dear
e alterando59
para60
.sh, 52
fonte
H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H
.:-
abrange também os casos quando está definido, mas vazioArnoldC , 228 bytes
Vamos fazer Arnold Schwarzenegger cantando ...
resultado:
fonte
Invalid input '\', expected '"' (line 2, pos 40)
Hahpy Birfday
reduz a contagem de caracteres em 4.APL (48)
fonte
↑'Happy birthday '∘,¨⌽4⍴3⍴'to you' 'dear APL'
Linguagem de programação de Shakespeare , 3429 bytes
Minhas próprias palavras, há um tempo atrás. E, no entanto, alguém foi demente o suficiente para fazê-lo. Sim, sim, eu sei. Bytes em excesso. Mas o SPL merece ser incluído aqui, eu acho. E acredite , eu fiz um esforço gigantesco para "jogar golfe" nesse programa, e é por isso que é um pouco repetitivo e usa principalmente as mesmas palavras (eu sempre poderia ter seguido a sugestão do DLosc , mas isso seria extremo demais para mim) .
O significado de tudo isso?
OK, se você está curioso sobre como tudo isso deve funcionar, deixe-me tentar explicar meu raciocínio. Em primeiro lugar, as variáveis. Eles têm que vir de peças shakesperianas e, como a contagem de caracteres é importante, temos que escolher as pequenas; assim,
Ajax
eFord
apareça. Eles precisam de uma descrição após serem declarados (o que é ignorado, mas ainda assim); Eu poderia ter usado uma única letra, mas heh.Ato I, Cena I
var Ajax, Ford; Ford = 0;
Trazemos as variáveis para o estágio e
Ajax
informamosFord
que seu valor será 0.Ato I, Cena II
if (Ford > 2*1+1) goto Scene V; Ford = Ford + 1;
OK, se o valor armazenado
Ford
for maior que 3, o programa passará para a Cena V; por outro lado, seu valor é incrementado.Ato I, Cena III
Ford = 2*2*2*2*2*2*1+2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*1-1; print((char) Ford); Ford = Ford+2*2*2*2*1-1; print((char) Ford); print((char) Ford); Ford = Ford+2*2*2*1+1; print((char) Ford); Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*1+2*2*2*1+(-1); print((char) Ford); Ford = Ford+2*2*2*1+1; print((char) Ford); Ford = Ford+2*1; print((char) Ford); Ford = Ford+2*2*2*(-1)+2*2*(-1); print((char) Ford); Ford = Ford+2*2*(-1); print((char) Ford); Ford = Ford+2*(-1)+(-1); print((char) Ford); Ford = Ford+2*2*2*2*1+2*2*2*1; print((char) Ford); if (Ajax == 2*1) goto Scene IV; Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*2*1+2*2*2*2*2*1+2*(-1); print((char) Ford); Ford = Ford+2*2*(-1)+(-1); print((char) Ford); Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*2*1+2*2*2*(-1)+1; print((char) Ford); Ford = Ford+2*2*2*2*1+2*2*2*1+2*(-1); print((char) Ford); Ford = Ford+2*2*2*1+2*-1; print((char) Ford); goto Scene II;
Cargas e cargas de linhas. A idéia é mexer com o valor armazenado
Ford
, realizando várias operações aritméticas para obter o número ASCII das letras desejadas; É assim que você escreveHappy Birthday
. Há umaif
cena interna: a ideia é verificar se essa é a terceira frase da música; se for, pulamos para a cena IV; caso contrário, seguimos em frente, para escreverto You
. Depois disso, voltamos à Cena II.Ato I, Cena IV
Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*2*1+2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*1+1; print((char) Ford); Ford = Ford+2*2*(-1); print((char) Ford); Ford = Ford+2*2*2*2*1+1; print((char) Ford); Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*1+2*2*2*2*1+2*1+1; print((char) Ford); Ford = Ford+2*(-1)+(-1); print((char) Ford); Ford = Ford+2*2*(-1); print((char) Ford); goto Scene II;
A maneira como isso funciona é semelhante à cena acima: a idéia é escrever
Dear SPL
.Ato I, Cena V
End.
Bem desse jeito.
Ainda não encontrei nenhum lugar onde isso possa ser testado, infelizmente ...
fonte
fat fat fat fat cat
. Além disso, eu uso github.com/drsam94/Spl/blob/master/splc.py para compilar meu código spl.Ruby, 54 bytes
Eu apenas pensei "Ei, ainda não há resposta para Ruby", mas então um apareceu alguns segundos antes deste. Ah bem...
fonte
Algum amor pelo PHP?
615958 bytesVeja em ação @ http://sandbox.onlinephpfunctions.com/
fonte
$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
\n
por uma quebra de linha real para salvar um caractere.Não consigo decidir apenas um idioma: /
BrainBack: 68
BrainBack é uma mistura entre BrainFuck e Forth, feita para um desafio PCG 7 de março de 2014
BrainFuck estendido : 79
O aniversário da EBF é 16 de julho de 2010
Esquema: 96
(R5RS, Raquete, R6RS REPL)
O esquema nasceu em dezembro de 1975 (NB: PDF)
Zozotez : 96
No entanto, parece mais correto fazer este em francês (86):
Resultado:
O aniversário de Zozotez é 19 de julho de 2011
fonte
Joyeux anniversaire à Zozotez
.Peixe morto (
26102391 caracteres)O que é isso? Um desafio apenas de saída? Parece que é um trabalho para Deadfish !
Infelizmente, como o Deadfish gera apenas números inteiros, o código acima gera as representações ASCII de cada caractere na música.
Se usarmos a especificação que
então podemos jogar até 2391 caracteres:
Nota: Deadfish não é realmente meu idioma favorito, mas não pude resistir: P. Também jogar golfe em Deadfish é um quebra-cabeça divertido por si só.
fonte
JS, 83 bytes
ou 79 bytes de @Ingo Bürk
ou 71 bytes de @kapep
ou execute no console esta página (42 bytes)
fonte
h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)
(você ainda pode usarprompt
para economizar ainda mais)t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)
alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)
69R: 70 bytes
Aproveita
paste
e reciclar vetores.fonte
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
cat
adiciona espaços entre as strings. Então você acaba com um espaço no início de cada linha, exceto a primeira.write(x,"")
->write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")
68 bytes. Aqui está minha solução original com ap=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")
reciclagem de vetores 73, me supera novamente.`~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"")
tio.run/##K/r/…T-SQL,
8987 bytesEdit: Provavelmente não deve ser a dragagem dessas coisas antigas, mas eu só notei uma mudança óbvia para recuperar alguns bytes.
Usando STUFF para remover partes indesejadas da sequência, o índice inicial é fornecido pelos valores na
FROM
cláusula multiplicados por 3fonte
GNU dc, 51
fonte
dc
, mas até a versão quase bruta é mais curta:[Happy Birthday To You]d[Happy Birthday Dear dc]rdf
51 caracteres.Perl - 58
Correr com:
Apenas por diversão:
fonte
say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]
?Python 507 bytes
Não ganhando nenhum prêmio ... mas se você olhar com cuidado, há alguma arte ASCII:
fonte
PowerShell -
696459e 91
e 108
fonte
Ruby, 56
fonte
=
sempre retorna o resultado da expressão após o sinal de igual. Se eu dissesse isso, seria impresso apenas"Dear Ruby"
(String#[]=
é um método).Marbelous , 151
Imprime
Happy Birthday
sempre quehb
é chamado, comto you
ouDear Marbelous
anexado, com base em se a entrada é0
ou1
. O mármore passadohb
não será emitido, pois ficará preso no sincronizador&0
.Abaixo está o quadro
hb
, com hexadecimal convertido para texto ascii:fonte
CJam, 46 bytes
Experimente aqui.
Isso deixa a seguinte matriz na pilha:
Cujo conteúdo é automaticamente impresso lado a lado no final do programa.
Como alternativa, com um loop for e a mesma contagem de caracteres:
fonte
Haskell: 75
Saída de código em ideone
Haskell um forro: 79
Você pode experimentar o liner online aqui: http://tryhaskell.org/
fonte
mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
putStrLn
em conformidade com a especificação (você obter cotações de casal comprint
)_
não é necessária porque o valor de retorno principal é jogado fora - você só vê-lo em GHCiVar'aQ - 121
fonte
GolfScript: 54 caracteres
Exemplo de execução:
fonte
T-SQL (compatível com MS): 75
fonte
+char(10)
por uma quebra de linha dentro da cotação, apenas faça a parte de retorno da sequência.C #
(75)(73)Usando
System.Diagnostics
com a finalidade deDebug.Print
Atualize para o código @Abbas '
Atualize para o código @Tyress '
(83)(76)Resultado:
fonte
String.Format
e o operador ternário. Você também pode fazer com que isso pareça muito menos com um programa C # e usei++<3
; p