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 .
fuente
Respuestas:
CJam,
4642 bytesCómo funciona:
Esto deja la pila como sigue al final del código:
que se imprimen automáticamente para imprimir como
Pruébelo aquí (copie el código y ejecútelo)
fuente
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.
Pruébalo usando loljs
Esta es mi versión preferida, con un peso de 187 caracteres (espacios añadidos para mayor claridad):
fuente
Deseos de cumpleaños de Mathematica- código de barras - demasiados bytes
Esto imprime los versos y los lee en voz alta.
StringReplace
reemplaza cada coma con una NewLine. Los códigos de barras no pueden contener caracteres de control.fuente
10
código de barras (esquina inferior derecha), ya queBarcodeRecognize
se introdujo en Mathematica 10. ^^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.
Mi calculadora no admite letras minúsculas, y las únicas variables que pueden ser cadenas son Str1, Str2, etc.
fuente
Sed,
6055 bytes(Se agregó 1 carácter porque no hay forma de hacer
sed
que funcione sin entrada).Ciertamente no es un ganador, publicado para demostrar
sed
rara 'ss///
función de reemplazar sólo el n º ocurrencia.Sed (más corto pero no interesante): 52 caracteres
Ejecución de muestra:
fuente
sed
las respuestas son siempre ganadores IMO :)sed
que funcione sin entrada)".C, 73 bytes
fuente
i++-3
. (Actualmente, el "Estimado c" aparece en la segunda línea.) (Al usar una sola variable, lo llamaría "c".)Python,
616059fuente
H="\nHappy Birthday to You"
yprint(H*3)[:59]+" Dear Python"+H
print
argumento.h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Dear
y cambiando59
a60
.sh, 52
fuente
H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H
.:-
también cubre los casos en los que se establece pero vacíoArnoldC , 228 bytes
Hagamos que Arnold Schwarzenegger cante ...
salida:
fuente
Invalid input '\', expected '"' (line 2, pos 40)
Hahpy Birfday
reduce el recuento de caracteres en 4.APL (48)
fuente
↑'Happy birthday '∘,¨⌽4⍴3⍴'to you' 'dear APL'
Lenguaje de programación Shakespeare , 3429 bytes
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í) .
¿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í,
Ajax
yFord
aparece. 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
Ajax
saberFord
que 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
Ford
es 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 escribesHappy Birthday
. Hay unaif
escena 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 escribirto 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 ...
fuente
fat fat fat fat cat
. Además, uso github.com/drsam94/Spl/blob/master/splc.py para compilar mi código spl.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...
fuente
¿Algún amor por PHP?
615958 bytesVéalo en acción @ http://sandbox.onlinephpfunctions.com/
fuente
$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
con un salto de línea real para guardar un carácter.Simplemente no puedo decidir sobre un solo idioma: /
BrainBack: 68
BrainBack es una mezcla entre BrainFuck y Forth, hecha para un desafío de PCG Mar 7, 2014
BrainFuck extendido : 79
El cumpleaños de EBF es el 16 de julio de 2010
Esquema: 96
(R5RS, Raqueta, R6RS REPL)
Scheme nació en diciembre de 1975 (Nota: PDF)
Zozotez : 96
Sin embargo, se siente más bien hacer esto en francés (86):
Salida:
El cumpleaños de Zozotez es el 19 de julio de 2011
fuente
Joyeux anniversaire à Zozotez
.Deadfish (
26102391 caracteres)¿Qué es esto? ¿Un único desafío de salida? ¡ Parece que es un trabajo para Deadfish !
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
entonces podemos jugar golf hasta 2391 caracteres:
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.
fuente
JS, 83 bytes
o 79 bytes por @Ingo Bürk
o 71 bytes por @kapep
o ejecutar en la consola esta página (42 bytes)
fuente
h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)
(todavía puede usarprompt
para ahorrar aún más)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
Aprovecha
paste
y recicla vectores.fuente
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
cat
agrega espacios entre las cadenas. Entonces terminas con un espacio al comienzo de cada línea, excepto la primera.write(x,"")
->write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")
68 bytes. Aquí está mi solución original con 73p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")
Vector reciclaje me gana de nuevo.`~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"")
tio.run/##K/r/…T-SQL,
8987 bytesEditar: 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
FROM
cláusula multiplicados por 3fuente
GNU dc, 51
fuente
dc
, pero incluso la versión casi en bruto es más corta:[Happy Birthday To You]d[Happy Birthday Dear dc]rdf
51 caracteres.Perl - 58
Corre con:
Solo por diversión:
fuente
say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]
?Python 507 bytes
No ganar ningún premio ... pero si lo miras con cuidado, hay algo de arte ASCII:
fuente
PowerShell -
696459y 91
y 108
fuente
Rubí, 56
fuente
=
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).Marbelous , 151
Se imprime
Happy Birthday
cada vez quehb
se llama, con unoto you
oDear Marbelous
anexos, en función de si la entrada es0
o1
. La canica pasadahb
no se emitirá, ya que se atascará en el sincronizador&0
.A continuación se muestra el tablero
hb
, con hexadecimal convertido a texto ascii:fuente
CJam, 46 bytes
Pruébalo aquí.
Esto deja la siguiente matriz en la pila:
Cuyo contenido se imprime automáticamente consecutivamente al final del programa.
Alternativamente, con un bucle for y el mismo recuento de caracteres:
fuente
Haskell: 75
Código de salida en ideone
Haskell un trazador de líneas: 79
Puedes probar el one liner en línea aquí: http://tryhaskell.org/
fuente
mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
putStrLn
conforme a la especificación (obtienes comillas doblesprint
)_
es necesario porque el valor de retorno de main se descarta, solo se ve en GHCiVar'aQ - 121
fuente
GolfScript: 54 caracteres
Ejecución de muestra:
fuente
T-SQL (compatible con MS): 75
fuente
+char(10)
con un salto de línea dentro de la cita, solo haga que la parte de retorno de la cadena.C #
(75)(73)Utilizando
System.Diagnostics
con el propósito deDebug.Print
Actualice al código de @Abbas
Actualizar a código de @Tyress '
(83)(76)Salida:
fuente
String.Format
y el operador ternario. También puede hacer que esto se parezca mucho menos a un programa y uso de C #i++<3
; p