Cante Parabéns à sua linguagem de programação favorita


119

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 .


2
Podemos contar o nome da linguagem de programação como um byte, porque pareceria justo para as pessoas que codificam em uma linguagem extensa como JavaScript versus alguém que faz isso em C. Estamos realmente procurando a lógica mais criativa, certo?
11388 MonkeyZeus

14
Por que todos os votos positivos, apesar de todos os votos negativos da música Bonbon ? É um desafio tão chato.
Xnor

10
Eu provavelmente deveria mencionar que a canção é protegido por direitos autorais e distribuir esses programas podem causar uma DMCA
catraca aberração


4
Pelo menos uma das respostas imprime uma nova linha principal . Isso é permitido?
Dennis

Respostas:


47

CJam, 46 42 bytes

"Happy Birthday to You
"___F<"Dear CJam
"@

Como funciona:

"Happy Birthday to You
"___                          "Push "Happy Birthday to You\n" string to stack 4 times";
    F<                        "From the last string, take only first 15 characters. F is a";
      "Dear CJam              "preinitialized variable whose value is 15";
"                             "Push "Dear CJam\n" to stack";
 @                            "Take the third string from end and put it to end";

Isso deixa a pilha da seguinte maneira no final do código:

["Happy Birthday to You
" "Happy Birthday to You
" "Happy Birthday " "Dear CJam
" "Happy Birthday to You
"]

que são impressos automaticamente para imprimir como

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear CJam
Happy Birthday to You

Experimente aqui (copie o código e execute-o)


1
a coisa dos "primeiros 15 caracteres" vem do F? é assim que ele sabe o número 15?
vijrox

1
Sim, são 10-15.
Jacob #

122

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.

HAI
H R "HAPPY BIRTHDAY "
T R SMOOSH H "TO YOU"
VISIBLE T
VISIBLE T
VISIBLE SMOOSH H "DEAR LOLCODE"
VISIBLE T

Teste usando loljs

Esta é a minha versão preferida, com 187 caracteres (espaços adicionados para maior clareza):

HAI
H R "HAPPY BERFDAY "
IM IN YR LOOP UPPIN YR N TIL BOTH SAEM N AN 4
  VISIBLE H!
  BOTH SAEM N AN 2, O RLY?
    YA RLY
      VISIBLE "DEER LOLCODE"
    NO WAI
      VISIBLE "2U"
    OIC
IM OUTTA YR LOOP
KTHXBAI

15
Eu só sabia que haveria uma resposta LOLCODE para isso. BTW, você não pode escrever e escrever? KTHXBYE.
Level River St

2
Eu tentei escrever uma resposta LOLCODE para outro desafio há algum tempo, mas é muito detalhado para o código de golfe e falta estruturas de dados decentes e a capacidade de criar funções complexas, o que limitou meus esforços!
i alarmado alienígena

3
Esta resposta me deu uma vontade de baixar o LOCODE e realmente aprendê-lo corretamente.
Pharap

2
Isso é ótimo!!
AStopher

89

Aniversário de código de barras do Mathematica- - muitos bytes

Isso imprime os versos e os lê em voz alta.

feliz Aniversário

Parabéns a você Parabéns a você
Parabéns a você
Mathematica
Parabéns a você

StringReplacesubstitui cada vírgula por uma NewLine. Os códigos de barras não podem conter caracteres de controle.


13
Não consigo ver um botão de código de barras no teclado! Como posso testar isso?
matsjoyce

17
Eu amo que há um 10código de barras (canto inferior direito), visto que BarcodeRecognizefoi introduzido no Mathematica 10. ^^
Martin Ender

Sim! Eu não tinha notado isso.
21414

11
Na verdade, eu digitalizei isso com um leitor de código QR. Ele possui espaços extras após cada vírgula, você não pode salvar bytes se - oh, espere. Deixa pra lá.
Timwi

55

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.

"HAPPY BIRTHDAY TO YOU
Disp Ans,Ans,sub(Ans,1,15)+"DEAR TI-BASIC
Ans

Minha calculadora não suporta letras minúsculas, e as únicas variáveis ​​que podem ser strings são Str1, Str2 etc.


Qual sabor da TI-Basic? Eu me familiarizei muito com isso na TI-84.
Jesan Fafon

7
É sempre bom ver o TI-Basic. Parece ser o padrão 8x TI-Basic, onde qualquer expressão é automaticamente armazenada no Ans, que pode ser usada como uma estratégia de otimização estranha e difícil de seguir. Eu também comecei a programar com essa linguagem incrível.
Codebreaker 14/10

4
Nota para os editores: você pode postar alterações (neste caso, perda de 8 caracteres) nos comentários, em vez de apenas editá-lo? Isso me faria sentir que essa ainda é a minha resposta.
Stretch Maniac

2
+1 !! foi assim que aprendi a programar também. Eu construí o Tron para a TI-83: ​​D, porém, era bastante lento, portanto não divertido.
Nacht

2
Haha, isso é incrível. Eu fiz um jogo de blackjack para a TI-83. No processo, aprendi todas as regras do Blackjack intimamente.
thomasrutter

44

Sed, 60 55 bytes

(1 caractere adicionado porque não há como fazê sed-lo funcionar sem entrada.)

s/^/Happy Birthday To You/
h
G
G
G
s/To You/Dear sed/3

Certamente não é um vencedor, postou a demonstrar sedrara 's s///recurso de substituir apenas o n º ocorrência.

bash-4.3$ sed 's/^/Happy Birthday To You/;h;G;G;G;s/To You/Dear sed/3' <<< ''
Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear sed
Happy Birthday To You

Sed (mais curto, mas não interessante): 52 caracteres

s/^/Happy Birthday To You/
h
G
p
s/To You/Dear sed/

Exemplo de execução:

bash-4.3$ sed 's/^/Happy Birthday To You/;h;G;p;s/To You/Dear sed/' <<< ''
Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear sed
Happy Birthday To You

7
sedrespostas são sempre vencedores IMO :)
Digital Trauma

A resposta mais curta parece ser 51 bytes, ao invés do 52 que você listou
Taylor Scott

1
@TaylorScott, a explicação na parte superior também se aplicava: “(1 caractere adicionado porque não há como fazer o sedtrabalho sem entrada.)”.
26418 manatwork

Ahh, isso faz sentido :)
Taylor Scott

30

C, 73 bytes

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}

Bug insignificante: deveria ser i++-3. (Atualmente, o “Querido c” aparece na segunda linha.) (Ao usar uma única variável, gostaria de nomeá-lo “c”.)
manatwork

constante fixo, variável alterada. Alguma idéia para encurtar o código?
VX

Desculpe, não faço ideia de reduzi-lo. C não é minha força. (Eu encontrei o bug porque mesmo sua pontuação atual é tão inacreditável para mim que eu tinha de experimentá-lo,.))
manatwork

12
Não deveria ser "Prezado C" (maiúsculo)?
TRiG 14/10

Também sinto falta dos caracteres de interpunção ...
VX

27

Python, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H

1
Você pode salvar 1 byte - H="\nHappy Birthday to You"eprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac

1
Este python é 2.7 ou 3?
George George

2
@ George: Python 2.7, pois não tem colchetes em torno do printargumento.
Falko

1
A saída de um intérprete interativo conta? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Threed 15/10

1
Você pode salvar mais um removendo o espaço anterior Deare alterando 59para 60.
Threed 15/10

26

sh, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H

3
Com a expansão parâmetro valor padrão apenas 53 caracteres: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
manatwork

Ooh muito bom @manatwork!
Digital Trauma

2
Você pode omitir o cólon na expansão de parâmetros - que funciona se o parâmetro nunca foi definida, enquanto que :-abrange também os casos quando está definido, mas vazio

@professorfish Nice - obrigado, eu não sabia disso!
Digital Trauma

@DigitalTrauma Um bom lugar para procurar se você precisa salvar personagens é wiki.bash-hackers.org/syntax/pe - há uma lista de todos sintaxe expansão de parâmetros

22

ArnoldC , 228 bytes

Vamos fazer Arnold Schwarzenegger cantando ...

IT'S SHOWTIME
TALK TO THE HAND "Happy Birthday to You"
TALK TO THE HAND "Happy Birthday to You"
TALK TO THE HAND "Happy Birthday Dear ArnoldC"
TALK TO THE HAND "Happy Birthday to You"
YOU HAVE BEEN TERMINATED

resultado:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you


@squeamishossifrage lol, corrigido.
Wasi

16
Talvez você possa adicionar um Ahnold lisp! Hahpy Birfdayreduz a contagem de caracteres em 4.
Compass


19

Linguagem de programação de Shakespeare , 3429 bytes

ninguém será demente o suficiente para entrar em um desafio de com a SPL, então ...

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) .

A Happy Birth Day

Ajax, a hero
Ford, a man

          Act I: 1

          Scene I: 1

[Enter Ajax and Ford]

Ajax:
 You are nothing!

          Scene II: 2

Ford:
 Am I nicer than the sum of a big cow and a son?

Ajax:
 If so, we shall go to Scene V. You are as big as the sum of thyself and a cat!

          Scene III: 3

Ford:
 You are as red as the sum of a big red warm rich bold fair cat and a big rich fine son.
 Speak thy mind! You are as big as the sum of thyself and the sum of a cute fair fine
 rich cat and a hog! Speak thy mind! You are as big as the sum of thyself and the sum
 of a cute fair fine rich cat and a hog. Speak thy mind. Speak thy mind! You are as bold as
 the sum of thyself and the sum of a big fine fair cat and a cow. Speak thy mind! You are
 as big as a red old fair fine tiny cow. Speak thy mind! You are as old as the sum of
 thyself and the sum of a red old fair fine tiny cow and a big joy. Speak thy mind.
 You are as red as the sum of thyself and the sum of the sum of a red old fair fine
 tiny cow and a rich old red sky and a pig. Speak thy mind! You are as old as the sum
 of thyself and the sum of a big fine fair joy and a son. Speak thy mind. You are as
 red as the sum of thyself and a cute son. Speak thy mind! You are as cute as the sum
 of thyself and the sum of a bad fat vile pig and a fat bad lie. Speak thy mind! You are
 as fat as the sum of thyself and a vile evil war. Speak thy mind! You are as vile as the
 sum of thyself and the sum of a pig and a toad. Speak thy mind! You are as fair as the
 sum of thyself and the sum of a big fair hard fine son and a red fine fair joy. Speak
 thy mind! Are you as old as a big cow?

Ajax:
 If so, we shall go to Scene IV.

Ford:
 You are as big as a red old fair fine tiny cow. Speak thy mind! You are as old as the sum
 of thyself and the sum of the sum of a big red warm rich bold fair cat and a red old fair
 fine tiny cow and a bad hog. Speak thy mind! You are as big as the sum of thyself and the
 sum of a fat bad hog and a war. Speak thy mind! You are as big as a red old fair fine tiny
 cow. Speak thy mind! You are as old as the sum of thyself and the sum of a big red warm
 rich bold fair cat and a fat foul bad hog and a son. Speak thy mind. You are as fat as
 the sum of thyself and the sum of the sum of a big fair hard fine son and a big fine
 fair joy and a bad pig. Speak thy mind. 

Ajax:
 Let us return to Scene II.

          Scene IV: 4

Ford:
 You are as big as a red old fair fine tiny cow. Speak thy mind! You are as old as the
 sum of thyself and a big red warm rich bold fair cat and a warm sky. Speak thy mind.
 You are as fat as the sum of thyself and the sum of a red old fair fine tiny cow and a
 cat. Speak thy mind. You are as fat as the sum of thyself and a bad foul hog. Speak
 thy mind. You are as cute as the sum of thyself and the sum of a big fair hard fine
 son and a sky. Speak thy mind. You are as big as a red old fair fine tiny cow. Speak thy
 mind! You are as old as the sum of thyself and the sum of thyself and the sum of the sum
 of the sum of a red old fair fine tiny cow and a big fair hard fine son and a big joy and
 a son. Speak thy mind. You are as bad as the sum of thyself and the sum of a fat pig and a
 hog. Speak thy mind. You are as fat as the sum of thyself and a lazy pig. Speak thy mind.

Ajax:
 Let us return to Scene II.

          Scene V: 5

[Exeunt]

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, Ajaxe Fordapareç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 Ajaxinformamos Fordque seu valor será 0.

Ato I, Cena II

if (Ford > 2*1+1) goto Scene V; Ford = Ford + 1;

OK, se o valor armazenado Fordfor 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ê escreve Happy Birthday. Há uma ifcena 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 escrever to 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 ...


Eu acho que você deveria poder repetir palavras, tipo fat fat fat fat cat. Além disso, eu uso github.com/drsam94/Spl/blob/master/splc.py para compilar meu código spl.
clamchowder314

16

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...

puts h="Happy Birthday to You",h,h[0,15]+"Dear Ruby",h

16

Algum amor pelo PHP? 61 59 58 bytes

$s="
Happy Birthday";echo$t="$s to You","$t$s Dear PHP$t";

Veja em ação @ http://sandbox.onlinephpfunctions.com/


1
Combine a atribuição a $ t com sua primeira saída:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork

@manatwork sugestão excelente, obrigado!
MonkeyZeus

58
Não. Não há amor pelo PHP. Sempre.
Fake Name

Mesmo número de bytes com tags curtas:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius

1
Substitua \npor uma quebra de linha real para salvar um caractere.
Christoph

15

Não consigo decidir apenas um idioma: /

BrainBack: 68

4 ["Happy birthday ">2 ->![<0 "to You
"]<[<0 "Dear BrainBack
"]<1 -]

BrainBack é uma mistura entre BrainFuck e Forth, feita para um desafio PCG 7 de março de 2014

BrainFuck estendido : 79

{h|"Happy Birthday ">}{t|"to You
">}&h&t&h&t&h|"Dear Extended BrainFuck
">&h&t

O aniversário da EBF é 16 de julho de 2010

Esquema: 96

(R5RS, Raquete, R6RS REPL)

(map(lambda(e)(display"Happy Birthday ")(display(if e "to You\n" "Dear Scheme\n")))'(1 1 #f 1))

O esquema nasceu em dezembro de 1975 (NB: PDF)

Zozotez : 96

((:'R(\(l)(p'|Happy birthday |())(p(?(a l)'|to You|'|Dear Zozotez|))(?(d l)(R(d l)))))'(t t()t))

No entanto, parece mais correto fazer este em francês (86):

((:'A(\(l)(p'|Joyeux anniversaire|())(p(a l))(?(d l)(A(d l)))))'(, , | Zozotez,| |.|))

Resultado:

Joyeux anniversaire,
Joyeux anniversaire,
Joyeux anniversaire Zozotez,
Joyeux anniversaire.

O aniversário de Zozotez é 19 de julho de 2011


4
+1 para "Feliz aniversário, querido Extended Brainfuck", provavelmente o nome do idioma mais trabalhoso aqui. E, no entanto, o programa é uma fração do tamanho do equivalente para o idioma pai. E para Zozotez, que realmente soa melhor em francês, embora em geral eu não goste da maneira como os franceses comprimem o nome da pessoa em uma linha idêntica para essa música.
Level River St

Na sua resposta Zozotez, deveria ser Joyeux anniversaire à Zozotez.
Beta Decay

2
@BetaDecay De acordo com minha esposa (francesa), ela deveria estar sem essa preposição. A Wikipedia francesa concorda.
19414 Sylwester

14

Peixe morto ( 2610 2391 caracteres)

O que é isso? Um desafio apenas de saída? Parece que é um trabalho para Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

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

Erros não são reconhecidos: o shell simplesmente adiciona um caractere de nova linha!

então podemos jogar até 2391 caracteres:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

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ó.


19
Para certos valores de "diversão".
Charles Wood

13

JS, 83 bytes

h="Happy Birthday to You\n",console.log(h,h,h.replace("to You\n","Dear")+" JS\n",h)

ou 79 bytes de @Ingo Bürk

h="Happy Birthday ",t="to You\n",console.log(h+t,h+t,h+"Dear Javascript\n",h+t)

ou 71 bytes de @kapep

console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)

ou execute no console esta página (42 bytes)

eval($("#answer-39759 code:first").text())

4
Além disso, isso é mais curto: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(você ainda pode usar promptpara economizar ainda mais)
Ingo Bürk

11
LOL no último pedaço de código ..: D
Otimizador

1
76:t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
NinjaBearMonkey 13/10

1
71:console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)
kapex 14/10

3
alerta, em vez disso, console.log, precisa de mais 2 colchetes, mas menor: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65 14/10

11

R: 70 bytes

Aproveita pastee reciclar vetores.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))

cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
Germcd

@germcd Isso não funciona, pois catadiciona espaços entre as strings. Então você acaba com um espaço no início de cada linha, exceto a primeira.
bdzimmer

write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 bytes. Aqui está minha solução original com a p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")reciclagem de vetores 73, me supera novamente.
Vlo

Reduzido para 66 bytes `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/…
Nick Kennedy

11

T-SQL, 89 87 bytes

Edit: 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 FROMcláusula multiplicados por 3

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)

Este é legal!
TLama

Esta é uma solução SQL brilhante e um truque muito bom!
BradC

9

GNU dc, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf

3
Eu também tentei dc, mas até a versão quase bruta é mais curta: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 caracteres.
manatwork

Em um rolo hoje @manatwork :)
Digital Trauma

3
Eu aprendi da existência de DC hoje por causa deste post e é excelente.
perfil completo de Caleb Paul

9

Perl - 58

say"Happy Birthday ".($_?"Dear Perl":"To You")for(0,0,1,0)

Correr com:

perl -E'say"Happy Birthday ".($_?"Dear Perl":"To You")for(0,0,1,0)'

Apenas por diversão:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'

6
Que tal say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024

@ core1024 Eu não sabia que você poderia fazer isso com matrizes, isso é incrível. Sinta-se livre para postar como sua própria resposta!
hmatt1

8

Python 507 bytes

impressão """
H ap py- Birth dia-a-Y = = Feliz - Hoje
- para - Y = H appy - Aniversário - D e
ar-P ython = Ha ppy - Bir t hda y-para- Y ou uHapp y -
Aniversário - até - Y ou = H app
y - No terceiro dia - até Y = H a ppy - B ir
"" ". substituir (" \ n "," "). substituir (" "," "). substituir (" - "," "). substituir (" = "," \ n ") [: 92]

Não ganhando nenhum prêmio ... mas se você olhar com cuidado, há alguma arte ASCII:

# # # ### ### # ### # ##### ### ##### # # ### # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # #
#### ##### ### ### # ### # ### # #### # # ##### # #
# # # # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # # # ### # # # #

Este não é um candidato sério.
Esolanging Fruit

3
@ Challenger5 Sim, "No entanto, também recompenso outros envios espirituosos com votos positivos (e incentivo todo mundo a fazer isso também). Portanto, embora este seja um concurso de código de golfe, respostas não tão curtas também são bem-vindas . "
Alex

7

PowerShell - 69 64 59

1,1,0,1|%{"Happy Birthday "+("Dear $ShellId","To You")[$_]}

e 91

$a,$b,$c="Happy Birthday.To You.Dear PowerShell".Split(".");1..2|%{"$a $b"};"$a $c";"$a $b"

e 108

$a=@();$b,$c="To You.Dear PowerShell".Split(".");1..4|%{$a+="Happy Birthday $b"};$a[2]=$a[2]-replace$b,$c;$a

6

Ruby, 56

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x

Você não pode incorporar coisas?
Optimizer

2
Um método que termina em =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).
britishtea

1
> Novas linhas em strings. Ok, agora estou completamente convencido de que o rubi é apenas magia vodu e, como camponês, devo usar o python.
precisa saber é o seguinte

6

Marbelous , 151

Imprime Happy Birthdaysempre que hbé chamado, com to youou Dear Marbelousanexado, com base em se a entrada é 0ou 1. O mármore passado hbnão será emitido, pois ficará preso no sincronizador &0.

03
00
02
01
hb
:hb
}0
=0&0
&1
&2//
746F20596F7544656172204D617262656C6F75730A
&0&0&0&0&0&0&1&1&1&1&1&1&1&1&1&1&1&1&1&1&2
486170707920426972746864617920

Abaixo está o quadro hb, com hexadecimal convertido para texto ascii: insira a descrição da imagem aqui


5

CJam, 46 bytes

4,{"Happy Birthday "\2="Dear CJam""to You"?N}%

Experimente aqui.

4,                                             "Push [0,1,2,3].";
  {                                         }% "Map...";
   "Happy Birthday "                           "Push the string.";
                    \                          "Swap top two stack elements (string and
                                                array element)";
                     2=                        "Check equality with 2.";
                       "Dear CJam""to You"     "Push two more strings.";
                                          ?    "Select string based on result of 2=.";
                                           N   "Push a line break";

Isso deixa a seguinte matriz na pilha:

["Happy Birthday " "to You" "\n" "Happy Birthday " "to You" "\n" "Happy Birthday " "Dear CJam" "\n" "Happy Birthday " "to You" "\n"]

Cujo conteúdo é automaticamente impresso lado a lado no final do programa.

Como alternativa, com um loop for e a mesma contagem de caracteres:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI

5
Mentiroso!! seu idioma favorito é Ruby / Mathematica: P
Otimizador

1
@ Optimizer Certamente não é Ruby, talvez Mathematica, mas nem tenho certeza disso. Para programação "real", eu provavelmente sempre escolheria C / C ++ / C #. (Eu também tenho certeza, que o seu é JS: P.)
Martin Ender

5
você me pegou: P: D
Otimizador

5

Haskell: 75

h="Happy Birthday "
y=h++"to You"
main=mapM_ print[y,y,h++"Dear Haskell",y]

Saída de código em ideone

Haskell um forro: 79

mapM_ print["Happy Birthday "++if x==3then"Dear Haskell"else"to You"|x<-[1..4]]

Você pode experimentar o liner online aqui: http://tryhaskell.org/


1
Um liner que raspa um personagem:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking

as compreensões da lista são muuuuito loooonnnnggggg
Alex Reinking

2
Além disso, deve ser tecnicamente putStrLnem conformidade com a especificação (você obter cotações de casal com print)
Alex Reinking

2
A _não é necessária porque o valor de retorno principal é jogado fora - você só vê-lo em GHCi
haskeller orgulhoso

5

Var'aQ - 121

"Happy Birthday " ~ a cher "to you\n" tlheghrar ~ b cher b tlheghrar a "dear Var'aQ" tlheghrar tlheghrar b tlheghrar cha'

1
Qapla '! +1 para usar o Var'aQ de todos os idiomas!
Wally West

5

GolfScript: 54 caracteres

4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%

Exemplo de execução:

bash-4.3$ golfscript.rb <<< '4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%'
Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear GolfScript
Happy Birthday To You

Eu apenas notei isso. (Pouco efeito colateral de tentar escrever esse código GolfScript por cerca de 5 a 6 horas.) Obrigado, @ MartinBüttner.
manatwork

1
Feliz aniversário Caro CodeGolf ?
Dennis

Grr. Eu estava cansado não apenas quando o escrevi, mas também quando o consertei. Obrigado @Dennis.
manatwork

5

T-SQL (compatível com MS): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')

Um bom ... desejo que eu tinha pensado nisso :)
MickyT

Boa ideia! Salve mais 9 bytes, substituindo +char(10)por uma quebra de linha dentro da cotação, apenas faça a parte de retorno da sequência.
BradC

5

C # (75) (73)

Usando System.Diagnosticscom a finalidade deDebug.Print

Atualize para o código @Abbas '

string x="\nHappy Birthday ",y=x+"to You";Debug.Print(y+y+x+"Dear C#"+y);

Atualize para o código @Tyress ' (83) (76)

for(int i=0;i++<4;)Debug.Print("Happy Birthday "+(i!=3?"to You":"Dear C#"));

Resultado:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You

2
Você pode salvar alguns caracteres usando String.Formate o operador ternário. Você também pode fazer com que isso pareça muito menos com um programa C # e usei++<3 ; p
FryAmTheEggman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.