Canta Happy Birthday a tu lenguaje de programación favorito


119

Tu lenguaje de programación favorito acaba de cumplir años. Sé amable y canta la canción de feliz cumpleaños .

Por supuesto, debe lograr esto escribiendo un programa en ese idioma. El programa no realiza ninguna entrada y escribe el siguiente texto en la salida estándar o en un archivo arbitrario:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear [your favourite programming language]
Happy Birthday to You

Debe sustituir la parte entre corchetes (y omitir los corchetes).

Este es un código de golf: el código más corto gana.

ACTUALIZAR

Me alegra que la pregunta haya despertado gran interés. Permítanme agregar información adicional sobre la puntuación. Como se indicó originalmente, esta pregunta es un código de golf, por lo que el código más corto va a ganar. El ganador será elegido a finales de esta semana (19 de octubre).

Sin embargo, también estoy premiando otras presentaciones ingeniosas con votos positivos (y animo a todos a que también lo hagan). Por lo tanto, aunque este es un concurso de código de golf, las respuestas no tan cortas también son bienvenidas.

Resultados

Felicitaciones a Optimizer , el ganador de este concurso con su 42 bytes de longitud, Cjam presentación .


2
¿Podemos contar el nombre del lenguaje de programación como un byte porque solo parecería justo para las personas que codifican en un lenguaje de largo aliento como JavaScript versus alguien que lo hace en C. Realmente estamos buscando la lógica creativa más correcta?
MonkeyZeus

14
¿Por qué todos los votos a favor de esto a pesar de todos los votos a favor de la canción Bonbon ? Esto es tan aburrido como un desafío.
xnor

10
Probablemente debería mencionar que la canción tiene derechos de autor y la distribución de estos programas puede causar un DMCA
freak de trinquete


44
Al menos una de las respuestas imprime una nueva línea principal . eso está permitido?
Dennis

Respuestas:


47

CJam, 46 42 bytes

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

Cómo 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";

Esto deja la pila como sigue al final del código:

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

que se imprimen automáticamente para imprimir como

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

Pruébelo aquí (copie el código y ejecútelo)


1
¿La cosa de los "primeros 15 caracteres" proviene de la F? ¿es así como conoce el número 15?
vijrox

1
Sí, son 10-15.
Jacob

122

LOLCODE: 109 (105 con ortografía "correcta")

LOLCODE no es un gran lenguaje para el golf, especialmente porque pierdes toda la belleza y expresividad al acortar el código.

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

Pruébalo usando loljs

Esta es mi versión preferida, con un peso de 187 caracteres (espacios añadidos para mayor claridad):

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
Solo sabía que habría una respuesta de LOLCODE a esto. Por cierto, kan u wryt n lwrcase insyd t kwotez? KTHXBYE.
Level River St

2
Intenté escribir una respuesta de LOLCODE a otro desafío hace un tiempo, pero es demasiado detallado para el golf de código, y carece de estructuras de datos decentes y de la capacidad de crear funciones complejas, ¡así que esto limitó mis esfuerzos!
Alarmé al extranjero el

3
Esta respuesta me ha dado ganas de descargar LOCODE y aprenderlo correctamente.
Pharap

2
¡¡Esto es genial!!
AStopher

89

Deseos de cumpleaños de Mathematica- código de barras - demasiados bytes

Esto imprime los versos y los lee en voz alta.

feliz cumpleaños

Feliz cumpleaños a ti
Feliz cumpleaños a ti
Feliz cumpleaños Estimado Mathematica
Feliz cumpleaños a ti

StringReplacereemplaza cada coma con una NewLine. Los códigos de barras no pueden contener caracteres de control.


13
¡No puedo ver un botón de código de barras en mi teclado! ¿Cómo puedo probar esto?
matsjoyce

17
Me encanta que haya un 10código de barras (esquina inferior derecha), ya que BarcodeRecognizese introdujo en Mathematica 10. ^^
Martin Ender

¡Si! No me había dado cuenta de eso.
DavidC

11
De hecho, escaneé esto con un lector de códigos QR. Tiene espacios adicionales después de cada coma, no podría guardar bytes si usted ... oh, espere. No importa.
Timwi

55

TI-Basic, 53 bytes

Bueno, como todos están poniendo su lenguaje de programación favorito, también podría agregar uno de mis viejos favoritos. Pasé mucho tiempo a lo largo de los años (antes de graduarme en lenguajes de programación reales) escribiendo comandos en una ventana del tamaño de un teléfono inteligente.

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

Mi calculadora no admite letras minúsculas, y las únicas variables que pueden ser cadenas son Str1, Str2, etc.


¿Qué sabor de TI-Basic? Me familiaricé mucho con él en la TI-84.
Jesan Fafon

77
Siempre es bueno ver TI-Basic. Esto parece ser el estándar 8x TI-Basic, donde cualquier expresión se almacena automáticamente en Ans, que puede usarse como una estrategia de optimización extraña y difícil de seguir. También comencé a programar con este increíble lenguaje.
codebreaker

44
Nota para los editores: ¿puede publicar cualquier cambio (en este caso pérdida de 8 caracteres) en los comentarios en lugar de solo editarlo? Eso me haría sentir que esta sigue siendo mi respuesta.
Stretch Maniac

2
+1 !! así aprendí a programar también. Construí Tron para la TI-83: ​​D, aunque fue bastante lento, por lo que no fue divertido.
Nacht

2
Jaja eso es asombroso. Hice un juego de Blackjack para la TI-83. En el proceso aprendí todas las reglas del Blackjack muy íntimamente.
thomasrutter

44

Sed, 60 55 bytes

(Se agregó 1 carácter porque no hay forma de hacer sedque funcione sin entrada).

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

Ciertamente no es un ganador, publicado para demostrar sedrara 's s///función de reemplazar sólo el n º ocurrencia.

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 (más corto pero no interesante): 52 caracteres

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

Ejecución de muestra:

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

77
sedlas respuestas son siempre ganadores IMO :)
Digital Trauma

La respuesta más corta parece ser de 51 bytes, en lugar de los 52 que ha enumerado
Taylor Scott

1
@TaylorScott, la explicación en la parte superior también se aplica allí: "(1 carácter agregado porque no hay forma de hacer sedque funcione sin entrada)".
manatwork

Ahh, eso tiene sentido :)
Taylor Scott

30

C, 73 bytes

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

Error insignificante: debería ser i++-3. (Actualmente, el "Estimado c" aparece en la segunda línea.) (Al usar una sola variable, lo llamaría "c".)
manatwork

constante fija, variable modificada. ¿Alguna idea para acortar el código?
VX

Lo siento, no tengo idea de acortarlo. C no es mi fuerza. (Encontré el error porque incluso tu puntaje actual es tan increíble para mí que tuve que probarlo;))
manatwork

12
¿No debería ser "Querido C" (mayúscula)?
TRiG

También extraño los personajes de interpunción allí ...
VX

27

Python, 61 60 59

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

1
Puede guardar 1 byte - H="\nHappy Birthday to You"yprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac

1
¿Es este Python 2.7 o 3?
George

2
@George: Python 2.7, ya que no tiene corchetes alrededor del printargumento.
Falko

1
¿Cuenta la salida de un intérprete interactivo? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Threed

1
Puede guardar uno más eliminando el espacio anterior Deary cambiando 59a 60.
Threed

26

sh, 52

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

3
Con la expansión de parámetro valor predeterminado sólo 53 caracteres: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
manatwork

Ooh muy bien @manatwork!
Trauma digital

2
Se pueden omitir los dos puntos en la expansión de parámetros - que funciona si el parámetro nunca se ha configurado, mientras que :-también cubre los casos en los que se establece pero vacío

@professorfish Nice - ¡gracias, no lo sabía!
Trauma digital

@DigitalTrauma Un buen lugar para buscar si necesita guardar caracteres es wiki.bash-hackers.org/syntax/pe - hay una lista de todas las sintaxis de expansión de parámetros

22

ArnoldC , 228 bytes

Hagamos que Arnold Schwarzenegger cante ...

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

salida:

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


@squeamishossifrage lol, fijo.
Wasi

16
¡Quizás puedas agregar un Ahnold lisp! Hahpy Birfdayreduce el recuento de caracteres en 4.
Brújula


19

Lenguaje de programación Shakespeare , 3429 bytes

nadie se enloquecerá lo suficiente como para entrar en un desafío de con SPL, así que ...

Mis propias palabras, hace un tiempo. Y, sin embargo, alguien estaba lo suficientemente loco como para hacerlo. Si si lo se. Demasiados bytes. Pero SPL merece ser incluido aquí, creo. Y creer en mí, he hecho un esfuerzo descomunal para "golf" este programa, que es por eso que es un poco repetitivo y utiliza en su mayoría las mismas palabras (que siempre podría haber seguido la sugerencia de DLosc , pero eso sería demasiado extremo incluso para mí) .

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]

¿El significado de todo esto?

OK, si tienes curiosidad acerca de cómo se supone que funciona todo esto, déjame intentar explicar mi razonamiento. En primer lugar, las variables. Deben provenir de obras de Shakesperian y, dado que el recuento de caracteres es importante, tenemos que elegir las pequeñas; así, Ajaxy Fordaparece. Necesitan una descripción después de ser declarados (que se ignora, pero aún así); Podría haber usado una sola letra, pero je.

Acto I, Escena I

var Ajax, Ford; Ford = 0;

Traemos las variables al escenario y hacemos Ajaxsaber Fordque su valor será 0.

Acto I, Escena II

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

OK, si el valor almacenado en Fordes mayor que 3, el programa salta a la escena V; de lo contrario, su valor se incrementa.

Acto I, escena 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 y cargas de líneas. La idea es jugar con el valor almacenado Ford, haciendo cargas y cargas de operaciones aritméticas para obtener el número ASCII de las letras deseadas, luego le decimos al compilador que muestre el número en forma de caracteres. Así es como escribes Happy Birthday. Hay una ifescena dentro de esta escena: la idea es verificar si esta es la tercera frase de la canción; si es así, saltamos a la escena IV; de lo contrario seguimos adelante, para escribir to You. Después de eso, volvemos a la Escena II.

Acto I, escena 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;

La forma en que esto funciona es similar a la escena anterior: la idea es escribir Dear SPL.

Acto I, escena V

End.

Así.

Todavía no he encontrado ningún lugar donde esto pueda ser probado, desafortunadamente ...


Creo que deberías poder repetir palabras, como fat fat fat fat cat. Además, uso github.com/drsam94/Spl/blob/master/splc.py para compilar mi código spl.
clamchowder314

16

Ruby, 54 bytes

Solo pensé "Oye, todavía no hay una respuesta de Ruby", pero luego apareció una pocos segundos antes de esta. Oh bien...

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

16

¿Algún amor por PHP? 61 59 58 bytes

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

Véalo en acción @ http://sandbox.onlinephpfunctions.com/


1
Combine la asignación a $ t con su primer resultado:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork

@manatwork excelente sugerencia, gracias!
MonkeyZeus

58
No. No hay amor por PHP. Siempre.
Nombre falso el

El mismo número de bytes con etiquetas cortas:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius

1
Reemplace el \ncon un salto de línea real para guardar un carácter.
Christoph

15

Simplemente no puedo decidir sobre un solo idioma: /

BrainBack: 68

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

BrainBack es una mezcla entre BrainFuck y Forth, hecha para un desafío de PCG Mar 7, 2014

BrainFuck extendido : 79

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

El cumpleaños de EBF es el 16 de julio de 2010

Esquema: 96

(R5RS, Raqueta, R6RS REPL)

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

Scheme nació en diciembre de 1975 (Nota: PDF)

Zozotez : 96

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

Sin embargo, se siente más bien hacer esto en francés (86):

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

Salida:

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

El cumpleaños de Zozotez es el 19 de julio de 2011


44
+1 para "Feliz cumpleaños querido Extended Brainfuck", probablemente el nombre de idioma más laborioso aquí. Y, sin embargo, el programa es una fracción del tamaño del equivalente para el idioma principal. Y para Zozotez, que de hecho suena mejor en francés, aunque en general no me gusta mucho la forma en que los franceses exprimen el nombre de la persona en una línea idéntica para esta canción.
Level River St el

En su respuesta de Zozotez, debería ser Joyeux anniversaire à Zozotez.
Decaimiento Beta

2
@BetaDecay Según mi esposa (francesa), debería ser sin esa preposición. Wikipedia en francés está de acuerdo.
Sylwester

14

Deadfish ( 2610 2391 caracteres)

¿Qué es esto? ¿Un único desafío de salida? ¡ Parece que es un trabajo para Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

Desafortunadamente, debido a que Deadfish solo genera números enteros, el código anterior genera las representaciones ASCII de cada personaje de la canción.

Si usamos la especificación que

No se reconocen los errores: ¡el shell simplemente agrega un carácter de nueva línea!

entonces podemos jugar golf hasta 2391 caracteres:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Nota: Deadfish no es mi idioma favorito, pero no pude resistirme: P. También jugar al golf en Deadfish es un divertido rompecabezas en sí mismo.


19
Para ciertos valores de "diversión".
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)

o 79 bytes por @Ingo Bürk

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

o 71 bytes por @kapep

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

o ejecutar en la consola esta página (42 bytes)

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

44
Además, esto es más corto: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(todavía puede usar promptpara ahorrar aún más)
Ingo Bürk

11
LOL en la última pieza del código ..: D
Optimizer

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

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

3
alert en lugar de console.log, necesita 2 corchetes más pero más cortos: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65

11

R: 70 bytes

Aprovecha pastey recicla vectores.

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 Eso no funciona del todo, ya que catagrega espacios entre las cadenas. Entonces terminas con un espacio al comienzo de cada línea, excepto la primera.
bdzimmer

write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 bytes. Aquí está mi solución original con 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")Vector reciclaje me gana de nuevo.
Vlo

Reducido a 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

Editar: Probablemente no debería estar dragando estas cosas viejas, pero acabo de notar un cambio obvio en esto para reclamar un par de bytes.

Usando STUFF para eliminar partes no deseadas de la cadena, el índice inicial es proporcionado por los valores en la FROMcláusula multiplicados por 3

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

Este es lindo!
TLama

¡Esta es una solución SQL brillante y un truco muy bueno!
BradC

9

GNU dc, 51

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

3
También probé con dc, pero incluso la versión casi en bruto es más corta: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 caracteres.
manatwork

En racha hoy @manatwork :)
Digital Trauma

3
Me enteré de la existencia de DC hoy por esta publicación y es excelente.
Caleb Paul

9

Perl - 58

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

Corre con:

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

Solo por diversión:

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

66
¿Qué tal say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024

@ core1024 No sabía que se podía hacer eso con matrices, eso es increíble. ¡No dude en publicar como su propia respuesta!
hmatt1

8

Python 507 bytes

impresión """
H ap py- Bir th day -to-Y ou = Happy - B rt hday
- to - Y ou = H appy - B irthday - D e
ar-P ython = Ha ppy - Bir t hda y -to- Y o uHapp y -
B irthday - to - Y ou = H app
y - B irth day -to-Y ou = H a ppy - B ir
"" ".replace (" \ n "," "). replace (" "," "). replace (" - "," ") .replace (" = "," \ n ") [: 92]

No ganar ningún premio ... pero si lo miras con cuidado, hay algo de arte ASCII:

# # # ### ### # # ### ##### ### ##### # # ### # # # #
¿Qué hay de nuevo?
#### ##### ### ### # ### # ### # #### # # ##### # #
¿Qué hay de nuevo?
# # # # # # # ### ##### # # # # # ### # # # #

Este no es un contendiente serio.
Esolanging Fruit

3
@ Challenger5 Sí, "Sin embargo, también estoy premiando otras presentaciones ingeniosas con votos positivos (y animo a todos a que también lo hagan). Por lo tanto, aunque este es un concurso de código de golf, las respuestas no tan cortas también son bienvenidas ".
Alex

7

PowerShell - 69 64 59

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

y 91

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

y 108

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

6

Rubí, 56

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

¿No puedes alinear las cosas?
Optimizador

2
Un método que termina en =siempre devuelve el resultado de la expresión después del signo igual. Si marcara esto, solo se imprimiría "Dear Ruby"( String#[]=es un método).
britishtea

1
> Nuevas líneas en cadenas. Bien, ahora estoy completamente convencido de que el rubí es solo magia vudú y, como campesino, debería apegarme a Python.
sagiksp

6

Marbelous , 151

Se imprime Happy Birthdaycada vez que hbse llama, con uno to youo Dear Marbelousanexos, en función de si la entrada es 0o 1. La canica pasada hbno se emitirá, ya que se atascará en el 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

A continuación se muestra el tablero hb, con hexadecimal convertido a texto ascii: ingrese la descripción de la imagen aquí


5

CJam, 46 bytes

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

Pruébalo aquí.

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";

Esto deja la siguiente matriz en la pila:

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

Cuyo contenido se imprime automáticamente consecutivamente al final del programa.

Alternativamente, con un bucle for y el mismo recuento de caracteres:

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

55
¡¡Mentiroso!! su idioma favorito es Ruby / Mathematica: P
Optimizer

1
@Optimizer Ciertamente no Ruby, tal vez Mathematica, pero ni siquiera estoy seguro de eso. Para la programación "real" probablemente siempre elegiría C / C ++ / C #. (También estoy bastante seguro de que el tuyo es JS: P.)
Martin Ender

55
me tienes: P: D
Optimizer

5

Haskell: 75

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

Código de salida en ideone

Haskell un trazador de líneas: 79

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

Puedes probar el one liner en línea aquí: http://tryhaskell.org/


1
Un trazador de líneas que afeita a un personaje:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking

lista de comprensión son muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
Alex Reinking

2
Además, técnicamente debería ser putStrLnconforme a la especificación (obtienes comillas dobles print)
Alex Reinking

2
No _es necesario porque el valor de retorno de main se descarta, solo se ve en GHCi
orgulloso haskeller el

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 por usar Var'aQ de todos los idiomas!
WallyWest

5

GolfScript: 54 caracteres

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

Ejecución de muestra:

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

Acabo de notarlo. (Poco efecto secundario de intentar escribir ese código GolfScript durante aproximadamente 5 ~ 6 horas.) Gracias, @ MartinBüttner.
manatwork

1
Feliz cumpleaños Estimado CodeGolf ?
Dennis

Grr. Estaba cansado no solo cuando lo escribí, sino también cuando lo arreglé. Gracias @ Dennis.
manatwork

5

T-SQL (compatible con MS): 75

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

Agradable ... ojalá hubiera pensado en eso :)
MickyT

¡Gran idea! Ahorre 9 bytes más reemplazándolos +char(10)con un salto de línea dentro de la cita, solo haga que la parte de retorno de la cadena.
BradC

5

C # (75) (73)

Utilizando System.Diagnosticscon el propósito deDebug.Print

Actualice al código de @Abbas

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

Actualizar a código de @Tyress ' (83) (76)

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

Salida:

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

2
Puede guardar un par de caracteres usando String.Formaty el operador ternario. También puede hacer que esto se parezca mucho menos a un programa y uso de C # i++<3; p
FryAmTheEggman
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.