El calendario discordiano es un calendario alternativo utilizado por los discordianos.
- El año discordiano tiene 5 estaciones, cada una de 73 días: Caos, Discordia, Confusión, Burocracia y Las secuelas.
- La semana discordiana tiene 5 días: Sweetmorn, Boomtime, Pungenday, Prickle-Prickle y Setting Orange. Cada año comienza con Sweetmorn (y en Chaos).
- Cada f años ourth (que Happe n es para alinear con Greg o rian salto sí r s), un extra d se inserta ay entre el caos 59 y el Caos 60 llamado el Día de San Tib . Está fuera de la semana discordiana, lo que significa que el día después del Día de San Tib será el Naranja, el día anterior a Prickle-Prickle.
- Los calendarios gregoriano y discordiano se alinean; ambos comienzan el mismo día, que se llama 1 de enero en el calendario gregoriano, y el Caos 1 en el discordiano.
- El primer año de Nuestra Señora de la Discordia (YOLD 1) fue 1166 AC en el calendario gregoriano, lo que significa que este año (2017 DC) es YOLD 3183.
- El calendario discordiano también tiene días festivos, pero no son importantes para este desafío y no debes publicarlos ni nada sobre ellos.
Escriba un programa o función que genere o devuelva la fecha de hoy (en el momento de la ejecución):
Today is Boomtime, the 16th day of Confusion in the YOLD 3183
El formato es "Today is $day_of_the_week, the $ordinal day of $season in the YOLD $year"
, donde $ day_of_the_week es el día en mayúscula (título-caso) de la semana, $ ordinal es el día de la temporada como ordinal (1st, 2nd, 3rd, 4th, ...), $ season es en mayúscula (título-caso) temporada, y $ año es el año.
Si su programa o función se ejecuta en el Día de San Tib, en su lugar, debería generar o regresar "Today is St. Tib's Day in the YOLD $year"
.
Reglas:
- Se aplican lagunas estándar.
- Si su idioma de elección no tiene forma de obtener la fecha actual, también puede tomar la fecha gregoriana actual en cualquier formato razonable como entrada.
- Este es el código de golf , gana el código más corto (por idioma).
- El espacio en blanco al final está bien.
- La capitalización importa.
ddate
Está prohibido llamar de cualquier manera- Se debe garantizar que su programa funcione de 3067 a 3265 YOLD (1901 a 2099 AD), fuera de ese rango puede dar valores incorrectos
Ver también:
- Malaclypse The Younger. "Principia Discordia, o cómo encontré a la diosa y lo que le hice cuando la encontré" . pag. 00034
- fecha (1)
- Publicación de sandbox para aquellos que puedan verla
Respuestas:
Mathematica,
403401 bytesVersión para contar el número de bytes: (espacios eliminados y nuevas líneas; desafortunadamente, esta parte es bastante difícil)
Versión para leer:
La respuesta puede ser probada con fecha arbitraria mediante la sustitución de
DateString@"ISOOrdinalDate"
porDateString[{year,month,day},"ISOOrdinalDate"]
parayear
,month
yday
sustituye por números.fuente
Python 2, 423 bytes
Version corta:
Forma más larga y legible:
Actualización: corregido con la ayuda de los grandes @Neil y @EriktheOutgolfer. Pero la respuesta de @Jonathans es mucho más corta.
fuente
y%4<1
funcionaría, pero no creo1-y%4
que lo haga .e
variable?Python 2 , 346 bytes
Nota: Este es un campo de golf (y una solución) de la respuesta de Jammon : originalmente pensé en enviar un comentario, pero al final cambié bastante (además, los sufijos diarios se han solucionado).
Pruébalo en línea! o ver algunas fechas de prueba codificadas .
fuente
e%10*(e/9!=1)
funciona?11st
,12st
y13st
(cuandoe/9
es 1 se multiplicaría por cero ymin
elegiría ese cero)JavaScript (ES6),
387380 bytesToma un parámetro de fecha opcional. Sin golf:
fuente
C #, 392 bytes
Versión completa / formateada:
fuente
Pyth , 295 bytes
Nota: contiene binario, puede que no sea seguro copiar y pegar desde aquí. Copiar y pegar desde TIO debería funcionar.
Pruébalo en línea!
Puede probar fechas arbitrarias reemplazando
.d2
al principio con 3 tuplas de (año, mes, día) así:(2020 2 29)
.Este fue un poco molesto ya que Pyth no tiene forma de obtener el "día del año", así que tuve que calcularlo yo mismo.
fuente