El día que se publicó esta publicación fue Nochebuena. Mañana sera navidad. Ayer fue Nochebuena. En dos días será
Christmas Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve
.
Su trabajo es tomar la fecha de ejecución del programa y codificarlo en formato de Nochebuena.
- Si su programa se ejecuta en Navidad, debería generar la cadena "Navidad".
- Si su programa no se ejecuta en Navidad, debería generar la cadena "Navidad", seguida de la cadena "Eva" repetidas
n
veces, donden
es el número de días hasta Navidad.- Tenga en cuenta que esto debe basarse en la próxima Navidad. Por ejemplo, si el día es el 26 de abril de 2019, debe hacer su cálculo en base al 25 de diciembre de 2019, no cualquier otra Navidad.
- Recuerde contar los días bisiestos.
- La Navidad es el 25 de diciembre de cada año.
Este es el código de golf , por lo que gana el código más corto. Sin embargo, tenga en cuenta que el objetivo no es encontrar el programa más corto en ningún idioma, sino encontrar el programa más corto en cada idioma en particular. Por ejemplo, si encuentra el programa C ++ más corto, entonces gana este concurso para C ++, incluso si alguien encuentra un programa más corto en Python.
Respuestas:
SmileBASIC,
737167 bytesEl programa imprime "Navidad", luego imprime "Eva" cada vez que pasa un día, hasta el 25 de diciembre. (25/12 = 0,48)
Puede tardar hasta un año en ejecutarse.
fuente
Fórmula Excel, 59 bytes
fuente
YEAR(TODAY()+6)
siempre devuelve el año correcto, evitando así la condición.YEAR(NOW()+6)
funciona también con 2 bytes menos.NOW()
incluye el tiempo, por lo que no será un número entero y no estoy seguro de queREPT
lo permita.="Christmas"&REPT(" Eve",DATE(YEAR(DATE(2018,12,25)+6),12,26)-DATE(2018,12,25))
Perl 6 ,
6147 bytesdiga 'Navidad' ~ 'Eve'x (Fecha.hoy ... ^ {. month == 12 &&. day == 25})Pruébalo en línea!
-14 bytes (!) Gracias a Jo King
Date.today ...^ /12\-25/
es la secuencia de fechas que comienza hoy y termina el día antes de Navidad. (La expresión regular/12\-25/
se compara con la representación de cadena de las fechas). La cadena" Eve"
se replica varias veces igual a la longitud de esa secuencia, y se emite después de la cadena"Christmas"
.fuente
/12.25/
?12025-12-24
R ,
11210672 bytesVía @digEmAll y @ J.Doe
Pruébalo en línea!
Mi respuesta original fue antes de la aclaración de que el código debía tomar la fecha en que se ejecuta el código como entrada. Podría modificarse como anteriormente para guardar muchos bytes, pero no me molestaré.
Pruébalo en línea!
Explicación: todos están en la iglesia, así que tengo tiempo para hacer esto. Extraer el año, coaccionar a entero. Haga un vector de la Navidad de ese año y la Navidad del próximo año y reste la fecha de entrada para obtener un vector de dos diferencias entre la fecha de entrada y esas dos Navidad.
Elija el no negativo y
cat
"Navidad" con tantos "Eves".fuente
y
una vez, por lo que puede usarlo directamente para 108 bytes.z[z>=0][1]
funcionaría en lugar demin
?Windows PowerShell ,
676463 bytesPruébalo en línea!
Se las arregló para eliminar
3 bytes4 bytes (gracias Cows quack ) usando el-f
operador ormat en lugar de.ToString()
, y luego restando la cadena de fecha del valor numérico 1225 en lugar de hacer una comparación con-ne
. El entero resultante se interpretará como un booleano para el condicional donde0
(que sucederá en Navidad) se interpreta comoFalse
(no ingrese al bucle), y cualquier otro valor se interpreta comoTrue
(ingrese el bucle).Como el número entero está a la izquierda ahora, la cadena de fecha se convertirá al número entero y se realizarán las operaciones matemáticas, a diferencia de la versión anterior en la que el
1225
número entero se convirtió en cadena para la comparación.Versión original
Windows PowerShell , 67 bytes
Pruébalo en línea!
Usar un
for
ciclo como unwhile
ciclo básicamente, porque es más corto. En la condición de bucle, verificamos la fecha actual (date
una forma abreviada deGet-Date
), canalizada alForEach-Object
alias de%
, utilizando el formulario que puede invocar un método por nombre comodín; en este caso, el método estáAddDays()
en elDateTime
objeto y el valor que le damos es$i
.Esto se canaliza
ForEach-Object
nuevamente para invocar elToString()
método, con formato de cadenaMd
(mes, luego día, dígitos mínimos ya que no nos importa lo que viene después). Esta cadena luego se prueba para ver si no es igual-ne
al número1225
, que se convertirá en una cadena para la comparación, ahorrándome las comillas.Es por eso que no importa que los meses y los días sean de un solo dígito, nunca será ambiguo porque no hay otro día del año en el que encadenar
1225
.El bucle continúa hasta que la cadena es
1225
. Al comienzo del programa,$i
será cero, por lo que comparará la fecha de hoy, y el bucle nunca se ejecutará, pero para cualquier otro día$i
se incrementa en el cuerpo del bucle, de modo que tendremos una cuenta de cuántos días hasta el la próxima Navidad, contabilizando automáticamente los años bisiestos y si la Navidad pasó o no este año.Después del ciclo, acabamos de emitir la cadena
Christmas
concatenada con el resultado de multiplicar la cadena poreve
el valor de$i
(que, el día de Navidad, será0
, resultando en noeve
s).fuente
;
después{$i++}
es redundante? (también wow, tomaste la delantera en bash nuevamente)C # (compilador interactivo de Visual C #) , 89 bytes
Pruébalo en línea!
-3 bytes gracias a @JeppeStigNielsen!
Mi estrategia es bastante sencilla:
t
a la fecha actualEve
sit
no es Navidadt
y repitaIntenté algunas cosas más elegantes, pero de esta manera requería la menor cantidad de bytes.
fuente
t.Month<12|t.Day!=25
por el más corto$"{t:Md}"!="1225"
. Utiliza una cadena interpolada y una cadena de formato de fecha y hora personalizada.T-SQL,
9288 bytesEditar: Guardado 4 bytes gracias a @BradC.
fuente
PRINT'Christmas'+...
y 2 más usando enDATEDIFF(D,
lugar deDATEDIFF(DAY,
APL (Dyalog Unicode) ,
7663 bytes SBCSPrograma completo Asume
⎕IO←0
(indexación cero).Pruébalo en línea!
⎕CY'dfns'
c o p y en la biblioteca dfns⎕TS
actual t iempo s apisonamiento como [año, mes, día, hora, minuto, segundo, ms]days
[c] encontrar el número de días [n] desde el 12/31/1899 00: 00: 00.000(⍳366)
añadir los primeros 366 números enteros (0 ... 365) para quedate
[c] encuentran las fechas [n] que corresponden a los números (366 × 7 mesa, una columna por unidad)⍉
transpuesta (7 × 366 mesa, una fila por cada unidad)1↓
colocar una fila (los años)2↑
para llevar las primeras dos filas (meses y días)12 25⍳⍨
encuentran el índice de la primera4×
multiplicación navideña que por cuatro' Eve'⍴⍨
usa para cambiar la forma de la lista de personajes y'Christmas ',
añádelo a esto[c] código de esa función
[n] notas para esa función
fuente
Python 2 ,
111103bytesPruébalo en línea!
Actualización inspirada en la respuesta de Richard Crossley .
Explicación:
fuente
Rubí , 80 bytes
Pruébalo en línea!
Gracias a tsh por su idea
fuente
puts
conp
: Enlace de prueba en líneaPHP, 61 bytes
Ejecutar
-n
o probarlo en línea .fuente
JavaScript,
1351311219288 bytesMi primera solución (ingenua) ( 135b ):
Establece 2 fechas: ahora y Navidad de este año. Si este último aún no ha pasado, solo difiere, si ha pasado, difiere de la Navidad del próximo año. Utiliza cualquiera de las diferencias para el número de repeticiones.
(Intentando) Pensar fuera de la caja ( 131b ):
El desafío especifica QUÉ salida se requiere al ejecutar el programa en un día determinado, pero no especifica CUÁNDO devolverlo ...
Esto solo "dormirá" durante un día, incrementará un contador en 1 y repetirá hasta que sea Navidad para dar la salida.
Dado que JavaScript no garantiza el tiempo de "suspensión", el resultado real podría estar desactivado.
También es feo para usar la
alert
función, lo que significa que en realidad no estamos tratando con JavaScript puro, sino también con las API del navegador (podemos usarconsole.log
al costo de 6 bytes adicionales).Un mejor enfoque ( 121b ):
A partir de hoy, incremente la fecha por un día hasta que sea Navidad, luego use el contador de ese ciclo para la cantidad de repeticiones requeridas.
Mejora (incluyendo pasar por un minificador y usar el truco de 12Me21 para afeitarse 5b extra) ( 92b ):
Toques finales ( 88b ):
fuente
t.getMonth()/t.getDate-.48
para verificar si la fecha no es el 25 de diciembreprint
es necesario ya que este es un programa, no una función, a menos que 1. lo conviertas en un lambda o 2. declares que estás utilizando un REPLt=new Date(+t+864e5)
es 1 byte más corto.VBA (Excel), 108 bytes
Copiar en un módulo en blanco. Imprime en la ventana Inmediato:
Nota: Usar en
:
lugar de saltos de línea ahorra dos bytes por línea.Tenga en cuenta que el editor de VBA insertará espacios adicionales entre palabras clave, operadores, etc. y paréntesis después de la definición secundaria, pero si copia y pega este código funcionará (no podría eliminar ese espacio antes de
&
).No está mal para VBA (por una vez).
fuente
Christmas
: |&
lanzamiento de un errornow
. Cuando haces eso, debería verse algo así?"Christmas";:For i=1To DateSerial(Year(Now+6),12,25)-Now:?" Eve";:Next
Bash + fecha GNU,
7273 bytes!=
con-
d=0
, porquedate -dday
es fecha + 1 y no funciona el 25/12Pruébalo en línea
fuente
=~
no funciona en el condicional for-loop?Python 2, 128 bytes / Python 3, 130 bytes
por supuesto, dos bytes menos con Python 2
fuente
as D
usted mismoBash ,
686561 bytesGolfó 4 bytes gracias a Nahuel Fouilleul mediante el uso de la
``
sustitución de comandos yeval
en lugar de sede
yxargs
Pruébalo en línea!
Dentro de la
``
sustitución de comandos , tenemoseval
ejecuta la siguiente cadena como comandos de shelldate\ -d{0..366}day\;
bajo la expansión de llaves{0..366}
, esto da como resultado la cadenadate -d0day; date -d1day; date -d2day; ... date -d366day;
, cada comando en esta cadena calcula la fecha entre 0 y 366 días desde el presente, lo que da como resultado la salida del formatoWed Dec 26 18:22:33 UTC 2018
, con cada uno en su propia línea|sed
sobre el cual, llame a los siguientes comandos sed/c.25/Q
Si la expresión regular/c.25/
coincide,Q
uit sin imprimir\;cEve
de lo contrario cambie la línea aEve
Todo el número requerido de
Eve
s se produce cada uno en su propia línea. Esta salida se captura``
y está sujeta a la división de palabras, donde las palabras se dividen en nuevas líneas. Cada palabra se alimenta como un argumento paraecho
.echo Christmas
...
Cada argumento de
echo
se imprime al estar separados por espacios, lo que resulta en la salida deseada.fuente
bash
específico sobre esta solución. Requiere GNUdate
,sed
yseq
sin embargo.C (gcc) , 157 bytes
Pensé que podría evitar incluir,
time.h
pero eso solo dio fallas de segmento.Pruébalo en línea!
fuente
#include <stdlib.h>
, no como si hiciera nada aquí*t;f(u)
lugar de*t,u;f()
y en#import<time.h>
lugar de#include <time.h>
y en5[t=localtime(&u)]
lugar det=localtime(&u);t[5]
Groovy , 66 bytes
Pruébalo en línea!
Cortesía de @ ASCII-only
fuente
Chistmas
: /Python 3, 106 bytes
fuente
Scala ,
116113 bytesPruébalo en línea!
Donde
c 25
es la abreviatura deDec 25
.fuente
contains("c 25")
lugar dematches(".*c 25.*")
JavaScript,
8677 bytesUsando REPL sería
Felicitaciones a ASCII solo para -9 bytes
fuente
for(c='Christmas',d=new Date;!/c 25/.test(d=new Date(+d+864e5));)c+=' Eve';c
o esta variante:for(s='Christmas',t=Date.now();!/c 25/.test(new Date(t+=864e5));)s+=' Eve';s
ambos son 76 bytes.Lua ,
137118 bytes.118 bytes
137 bytes (anterior)
Vale la pena señalar que no funciona en LuaJIT (error de sintaxis)
fuente
MySQL, 102 bytes
más o menos lo mismo que la respuesta T-SQL de Neil . Parece que no hay una forma más corta en SQL.
Pruébalo en línea .
fuente
MATLAB, 91 bytes
MATLAB Non-looper, 100 bytes
fuente
Scala , 123 bytes
Gracias al trabajo de ASCII-only.
Pruébalo en línea!
Scala + Joda-Time , 140 bytes
No se ejecuta en TIO ya que requiere la biblioteca Joda-Time.
fuente
java.util.Date
a trabajar aquí: /object Main extends App{}
caracteres en mi recuento (porque tampoco lo hice en mis otras respuestas de Scala). Si sacamos eso, me ganas ^^withDate()
llamada es muy cara ...05AB1E ,
9389 bytesPruébelo en línea o Pruébelo en línea con una fecha autoevaluada emulada de 'hoy' .
Explicación:
05AB1E no tiene ningún valor incorporado para las fechas, excepto para recibir el año / mes / día / horas / minutos / segundos / microsegundos actuales, por lo que la mayoría de los bytes se usan para cálculos manuales.
Vea esta respuesta mía para comprender cómo vamos al día siguiente. (PD:
1¾ǝ
ha sido reemplazado porT`ǝ
, ya que también usamos elcounter_variable
otro lugar)Vea este consejo mío 05AB1E (secciones ¿Cómo usar el diccionario? Y ¿Cómo comprimir enteros grandes? ) Para comprender por qué
'»ˆ
es"eve"
;'ŒÎ
es"christmas"
; yŽ9Ú
es1225
.fuente
C # (compilador interactivo de Visual C #) , 141 bytes
Pruébalo en línea!
fuente
Rojo ,
8986847876 bytes-10 bytes gracias a ASCII-only!
Pruébalo en línea!
fuente
now
y nonow/date
. Gracias por tus mejoras!Perl 5 , 68 bytes
Pruébalo en línea!
Donde
c 25
es la abreviatura deDec 25
.fuente