Reto
Dado que la Navidad es:
- diciembre
- Mes 12
- Día 25
Cada año, determine la fecha de hoy y si hoy es Navidad o no. Si es Navidad, debes imprimir "It's Christmas"
. Si no es Navidad, de alguna manera debe esperar hasta Navidad y luego imprimir "It's Christmas"
.
Ejemplo
De esta pregunta de desbordamiento de pila
import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
time.sleep(60)
print "It's Christmas"
Python en 115 caracteres
Reglas
Estas son las reglas:
- Suponga que el reloj de la computadora siempre está correcto.
- Su código debe poder iniciarse en cualquier momento.
- Su código debe imprimirse
"It's Christmas"
en Navidad. - Looping ciertamente no es necesario, pero una vez iniciado, su código no debe detenerse hasta que se haya impreso.
- El código más corto gana.
Respuestas:
Perl + Unix, 40 caracteres
Esto es lo mismo que la solución Perl de JB , excepto que guardo algunos caracteres usando el
date
comando externo en lugar de Perllocaltime
.fuente
Bash, 39
Para aquellos que simplemente no pueden esperar:
Esto sigue todas las reglas, especialmente la primera.
fuente
Unix, 39 bytes
Con la ayuda de Dennis, gracias por eso.
fuente
echo{,} "It\'s Christmas"|at -t12252359
, esto es más corto que la respuesta aceptada. (La barra invertida es obligatoria por cierto.)PowerShell, 45
46caracteresCiertamente, no es muy eficiente en el consumo de energía, por lo que una batería de computadora portátil podría morir antes de Navidad (razón para desear una nueva, tal vez). Pero no dormir es definitivamente más corto .
Esto también es independiente del entorno local. Y gracias a Jaykul por un buen truco para reducir esto aún más.
Abusando un poco de las reglas, 45 caracteres
Esto imprimirá líneas vacías hasta que sea Navidad, sobre el cual imprimirá "Es Navidad".
Eso ...
fuente
-match
, y prescindir del comodín, sin ganancia / pérdida de caracteres.Python (36 caracteres)
En el espíritu de abusar de las reglas:
Definitivamente imprime "Es Navidad" en Navidad
Si no es Navidad, pase el tiempo imprimiendo "Es Navidad"
fuente
while 1:print"It's Christmas"
.PostScript, 90
No ejecute en una impresora, no imprime una página, y solo hará DoS su impresora hasta el día de Navidad. Por otra parte, recuperar su impresora sería un buen regalo.
fuente
Mathematica, 47
fuente
Perl, 44
45¿No sería suficiente el tiempo GMT? (3 caracteres apagados ;-)
fuente
1until localtime=~/c 25/;
te ahorraría un char. :)-E
en ese momento. ¡Gracias!localtime
continuación. Siéntase libre de robarla si lo desea, pero sentí que la dependencia adicional justificaba una respuesta por separado.)Perl, 45
Perl, 44
utilizando el operador ternario (Gracias a Ilmari Karonen).
fuente
? :
en lugar de&& ;
ahorrarte un char también. (Y lo usaría ensay
lugar dedie
una salida más bonita.)say
lugar de morir, el guión nunca termina.Javascript, 51 caracteres
Es un asesino de CPU:
fuente
Quería hacer esto sin analizar cadenas. Posteriormente, hay muchos números mágicos en mi código.
Hice alguna aproximación para dar cuenta de los años bisiestos. ¡Nadie dijo que tenía que imprimirlo justo a las 00:00:00, 25 de diciembre!
Perl,
806957 caracteresEditado para bucles más concisos!
fuente
R (47)
fuente
Pitón, 66
68fuente
1
al final de la segunda línea me parece bastante sospechoso. : P1
proporciona un cuerpo para el bucle while. Básicamente es una espera ocupada hasta el 25 de diciembre. Tiene el mismo efecto quewhile 1:if'c 25'in time.asctime():break
.time.ctime()
lo haríaTI-BASIC,
4238Espera que el formato de fecha sea AAAA / MM / DD.
getDate crea una lista de tres elementos
{year,month,day}
; solo en Navidad es mes ^ 2 + día ^ 2 igual a 769.Se usan 23 bytes para la cadena porque las letras minúsculas son dos bytes cada una, excepto por i, que se muestra como el token de la unidad imaginaria.
fuente
Archivo por lotes, 68 caracteres
No se puede usar de forma interactiva, ya que mata la sesión. Resolver eso requeriría 5 caracteres más.
También sensible a la localización. Esto funciona en mi entorno local que utiliza el formato de fecha ISO 8601.
Pero bueno, es un archivo por lotes (que la mayoría ni siquiera considera un lenguaje de programación). Y más corto que Javascript (y a la par con Python).
fuente
Groovy, 55
Creo que funciona, pero aún esperando la salida.
fuente
.*
son completamente innecesarias. (Ps. Puede probarlo esperando el 5 de diciembre en lugar de 25.)(pdf) eTeX - 180 caracteres solo del 1 al 25 de diciembre.
TeX solo tiene una forma de acceder a la fecha en que se inicia el programa, y el tiempo transcurrido desde el inicio, con un límite de 32768 segundos, por lo que necesito calcular la cantidad de segundos a esperar y, por cada segundo, hacer un ciclo que espere tiempo transcurrido para alcanzar
1s
y restablecer el tiempo. (Precisamente, estoy haciendo bloques de 900 segundos).Trabajar para cualquier mes requiere más trabajo: 355 caracteres.
fuente
MySQL, 180 caracteres
Porque, ¿para qué estás usando tu motor de base de datos?
No es muy competitivo a lo largo, pero bueno, ¡es factible!
fuente
DELIMITER /
,RETURNS TEXT
yCURDATE()LIKE'%12-25'
; e intente eliminar algunos espacios en blanco.Rubí, 53
fuente
PHP, 40 bytes
Bucle hasta el 25 de diciembre; luego salga al modo plano e imprima.
Ejecutar con la configuración predeterminada (no mostrar avisos).
fuente
Código de máquina 8086, 33 bytes
fuente
Javascript,
93897877 caracteresfunction x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()
fuente
setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)
con 61 caracteres ... el único inconveniente es que seráalert()
todo el día en Navidad.setInterval
a 1?setInveral
a1000*60*60*24
y que ambos no hará que el proceso sufren y notificará sólo una vez en navidad.D, 130
fuente
t.month^12|t.day^25
(si tengo mis prioridades correctas)Q, 63 caracteres
trabajará para el día de navidad todos los años
fuente
SQL * Plus + PL / SQL - 100
SERVEROUTPUT ON
DBMS_OUTPUT.put
lugar deDBMS_OUTPUT.put_line
pero eso no imprime nada.fuente
C # (126)
Más agradable para su batería:
C # (163)
editar
La segunda versión ("más agradable para su batería") tiene un pequeño problema de dec. 26 al dic. 31º Solo pensé en: P
Ambas versiones probablemente se pueden acortar un poco más.
fuente
Japt , 27 bytes (no competidor)
Para comparar con la fecha de hoy: Reemplace
c 25
con la última letra de este mes (abreviatura) + espacio + día del mes.Feb 02
==b 02
Pruébalo en línea! No competir porque Japt es mucho más nuevo que este desafío.
fuente
VBA, 58 bytes
La función de ventana VBE anónima inmediata no toma ninguna entrada y se ejecuta hasta el día de Navidad, momento en el que sale
It's Christmas
a la ventana VBE inmediata.fuente
bash-n-date: 69 caracteres:
Pero fallará del 26 de diciembre al 31 de diciembre.
fuente
Q (60)
fuente