¡Feliz cumpleaños para mi!
Escriba un programa que imprima Happy birthday to me!
en su cumpleaños.
- El cumpleaños del programa es el momento de creación, última modificación o compilación del programa (usted elige), y no debe estar codificado.
- La fecha que use como cumpleaños no debe verse afectada por la invocación o ejecución del programa de ninguna manera. No puedes modificar tu cumpleaños.
- Para obtener crédito adicional (-15% de bytes), imprima
Happy birthday to you!
en su cumpleaños (codificado), si no coincide con el programa. O use el cumpleaños de alguna celebridad y obtenga -14%. - Debe imprimir solo esto, y no imprimir nada en ningún otro día.
- Contar bytes, en UTF-8.
- Usa el calendario gregoriano.
Buena suerte y feliz cumpleaños (a los programas para recién nacidos).
PD:
Siguiendo el comentario de Izkata, si imprimes Happy birthday to Mel
en el cumpleaños de Mel Kaye , obtienes un 20% de descuento. Pero debe proporcionar una fuente creíble de que es esta fecha.
Respuestas:
PHP
7775746560Muchas gracias a las excelentes sugerencias de Tim Seguine :
PHP furtivo:
46424140Usando la idea de Phil H y nuevamente la sugerencia de Tim Seguine :
fuente
''
lasdm
cadenas. Se generó una advertencia, pero creo que se envía al error estándar si el informe de errores está activado.<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Bash (astuto): 36
Según las reglas: "tiempo de creación, modificación o compilación del programa". Elijo el tiempo de modificación, y una auto modificación perpetua. [HT @ace por 1 char]
Perl (también astuto): 29
Este es posiblemente menos astuto que el primero; Los programas de Perl siempre se compilan antes de que se ejecuten, lo que no todo el mundo sabe. Mire, hay un giro educativo sobre la astucia. Así que aquí está la fecha de compilación que estoy usando.
- Editar para cambio de regla -
Esto fue escrito antes de que hubiera alguna regla sobre cambiar tu cumpleaños. Creo que el Perl sigue en pie; Todos los programas de Perl se compilan antes de ejecutarse. ¡Dejaré la respuesta aquí por razones educativas!
fuente
!
con\!
y eliminar las comillas para guardar 1 charbash - 65
Gracias a ugoren , as y nyuszika7h por su ayuda.
fuente
!
con el\!
para que no necesites las comillas y ahorres 1 personaje.!
en shells interactivos, no scripts.[
y en]
lugar de[[
y]]
.C # 198.05 (233 - 15%)
Formateado:
191 (sin bonificación)
181,05 (213 - 15%)
Con algunas instrucciones adicionales (necesita compilar esto
b.exe
y ejecutarlo desde el directorio en el que se encuentra el ejecutable) puedo obtener esto:171 (sin bonificación)
Las mismas instrucciones que las anteriores, esta vez solo imprimen un mensaje en su propio cumpleaños (por lo que no hay un bono de -15%).
fuente
,b="1202"==t
después de obtener la cadena de fecha y usarla en su lugar.,b="1202"==t
pero la==t
parte no es posible ya que eso se evalúa como bool y la otra var es una cadena. No puede (AFAIK es decir) usar dos tipos diferentes en una declaración "var".CreationTime.Date == DateTime.Today
.Java - 275 - 15% = 233.75 con bonificación / 237 sin bonificación
Con bonificación:
Sin el bono:
Nací el 23 de abril.
fuente
\n
) no se requiere AFAIK que le ahorra otros 4 bytes ;-)Estoy muy orgulloso de este pequeño truco para guardar algunos bytes en el mensaje. Espero que se incluya en otras respuestas. ¡Fui el primero en pensar en esto!
Pitón
105 caracteres, sin crédito adicional. Guarde el archivo como "feliz cumpleaños para mí" y ejecútelo. Se ejecuta solo en GMT, y "cumpleaños" se define como la fecha de su nacimiento, no su aniversario (a menudo también llamado "cumpleaños").
Para que funcione, guarde esto como "feliz cumpleaños para mí" y ejecute
python "happy birthday to me"
Nota: por supuesto, todo menos un pequeño bootstrap podría estar en el nombre del archivo, haciendo que cualquier código arbitrariamente grande se reduzca al bootstrap. Normalmente consideraría este "engaño". Sin embargo, "feliz cumpleaños para mí" no es un nombre de archivo irracional: describe lo que hace el programa, mucho mejor que algunos programas (por ejemplo, "python"), por lo que en este caso lo permitiré :)
fuente
eval(sys.argv[0])
?However, "happy birthday to me" is not an unreasonable filename - it describes what the program does, much better than some programs (e.g. "python"), so in this case I'm going to allow it
Matlab: 66
El nombre del archivo debe ser 'fm'
fuente
strncmp(x, y, 5)
compara fechas como28-12-2013
los primeros 15 caracteres (28-12
por ejemplo, el 28 de diciembre). ¿Esto también funciona cuando la configuración regional del usuario es,yyyy/mm/dd
por ejemplo? ¿Matlab tiene el valor predeterminadodd-mm-yyyy
siempre? (Sólo curioso). Editar Nevermind: ¡lo encontré! . Parece que sí. No importaría de todos modos paramm/dd/yyyy
odd-mm-yyyy
desde tanto la izquierda como la derecha del operando sería utilizar el mismo formato de todos modos y ambos 5 caracteres más a la izquierda coincidiría con todos modos; siempre y cuando el año nunca lidere.t
? Nodir('f.m').date
funcionat
es necesario paradir
devolver los atributos del archivo (de lo contrario, solo devolvería todos los archivos en el directorio que coincidan'f.m'
). Además,t
es necesario acceder aldate
campo.GNU COBOL con -free, 204
Rompo las reglas sobre la celebridad, así que no hay bonificación allí ...
El texto producido es introducido por el usuario (solicitado cuando se ejecuta). Si eso no es bueno, entonces la línea que define
C
debe ser eliminada, al igual queACCEPT C
, yDISPLAY C
debe serDISPLAY "HAPPY BIRTHDAY TO ME!"
, para siete caracteres adicionales.WHEN-COMPILED
es un registro especial que contiene la fecha / hora de compilación que está disponible para el programa (siempre útil, puede saber que tiene la versión correcta). Se trunca en elMOVE
porque el resto no es necesario.DATE
es la fecha actual, esta es aammdd.El
/
en la definición de A es un símbolo de edición de inserción, ya que la fecha de compilación contiene barras inclinadas. Un personaje extra, pero facilita la comparación.Celebridad = Grace Hopper
fuente
Lote: 37 bytes
Robar el método utilizado por una de las respuestas de Bash.
Otro método: 145 bytes
fuente
Ruby, 69 caracteres / bytes
31536000
es la cantidad de segundos en un año y86400
es la cantidad de segundos en un día.fuente
JavaScript
Node.js, 156 bytes
Utiliza la hora de modificación del archivo.
fuente
Powershell - 105 bytes
Sin golf:
El bono no vale la pena, solo puedo obtener 117.5.
fuente
Powershell - 127
Para el bono del 15%: 151 bytes, menos del 15% = 128,4
fuente
write
comando: con solo"happy birthday to me!"
lo imprimirá.Ruby -
8010387 bytesRuby -
123115135121 - 15% =104.5597.75114.75102.85 puntosPuede ser un poco más largo o más corto dependiendo de dónde cae tu cumpleaños en el año, y la forma más corta de representarlo. Para el mío, eso es
36e5
(segundos desde la época; depende de la zona horaria).¿Mel Gibson cuenta? ¡Aquí hay un byte de 138 - 35% de bonificación = programa de 89.7 puntos que se celebra a sí mismo, a mí y a Mel!
fuente
PureBasic
Sin Bono - 142
Con Bono - 218 - 15% = 185.3
fuente
TI-BASIC, 68 bytes
Recuerde, estas fichas son un byte:
If , Ans, →, Disp
.getDate
son dos bytes Todos los demás símbolos de un carácter son de un byte.fuente
J 79
Versión de bonificación 120 - 15% = 102
¿Recibo crédito adicional por imprimir ambos cuando ambos cumplen años?
Explicación (de derecha a izquierda):
El verbo central del tren.
El diente izquierdo para el tren central:
fuente
Java - 196
Esto difiere del otro envío de Java mediante el uso de cadenas, lo que elimina 41 caracteres en el proceso. Utiliza String.format ("% tj") para formatear un java.util.Date o un String largo como un día del año, y luego compara estos dos Strings.
Formateado:
fuente
C # 191 sin bonificación
formateado:
fuente
var x="MMdd";
+ ToString (x
) + ToString (x
) = 15 mientras que ToString ("MMdd"
); + ToString ("MMdd"
); solo cuesta 12.WriteLine()
se puede acortarWrite()
. Con lo anterior y este cambio en su lugar, tiene exactamente la misma solución que yo ;-)JavaScript (node.js): 100 bytes
fuente
vb.net ~ 161c
Esto imprimirá el mensaje de celebración a todos cuyo cumpleaños sea.
Alan => Alan Kaye
Puntuación: 253c (-33c vb.net min) = 220 - 15% (mi bono de cumpleaños) = 187c - 14% (Celeb Birthday) = 160.82 ~ 161c o 220c - 29% = 156.2 ~ 157c
fuente
Powershell, 82 bytes
dónde
son las combinaciones de atajos y alias para la expresión:
que equivale a una forma canónica:
Powershell, 119 bytes - 14% = 102.34 puntos
Al 3 de enero , se muestra el guión
Happy birthday to Prof!
. Si este script se guarda el 3 de enero, se mostrarán dos saludos.fuente
C # - 63 bytes
Elijo el tiempo de compilación . Dado que el código C # compila a MSIL, que en tiempo de ejecución es compilado al código ejecutable por el compilador JIT , este programa cumple las condiciones.
EDITAR: respuesta posiblemente inválida como se señala en los comentarios.
fuente