Alguien le dio a mi esposa un calendario decorativo que consta de cuatro cubos. Aquí se muestra la fecha de hoy (a partir de la publicación de este desafío) en el frente:
Cuando lo vi por primera vez, lo miré desde el ángulo equivocado (directamente desde arriba) y no pude entender por qué daba esta información:
[["February", "January"], [3], [7], ["Monday", "Tuesday"]]
Su trabajo es replicar mi error para cualquier fecha en 2019.
Desafío
Escriba un programa o función que tome cualquier fecha de 2019 y muestre lo que aparece en la parte superior de todos los cubos cuando esa fecha se muestra hacia afuera desde el frente del calendario.
Aquí están los seis lados para todos los cubos. Para mostrar un 6
solo dale la vuelta 9
. El 0
es verticalmente simétrico, por lo que está 0
al revés 0
. Puede haber más de una respuesta correcta para algunas fechas (por ejemplo, cualquier día 11 de cualquier mes tendrá más de una forma de usar los cubos, y la 0
cosa) para que pueda generar cualquier respuesta correcta.
Reglas
- Lagunas estándar prohibidas.
- El formato de entrada / salida es flexible.
- La salida tiene que estar en orden por cubo, pero no dentro de un cubo. El orden debe ser primero el cubo del mes, luego los dos cubos numéricos, seguidos del cubo del día de la semana. Pero cuando un cubo tiene dos elementos en la parte superior, esos dos elementos pueden estar en cualquier orden.
- Puede reemplazar
January
aDecember
0-11 o 1-12 si lo desea. - Puede reemplazar los días de la semana con 0-6 o 1-7 si se quiere, y se puede empezar la semana en cualquiera
Sunday
oMonday
(pero no se puede iniciar la semana en cualquier otro día - esto es PPGC, no algún tipo del pueblo loco) - Esto es code-colf . Pocos bytes para cada idioma gana.
- Explicaciones alentadas.
Casos de prueba
(Tue) 2019-01-29 [[ "July", "August" ], [3], [7], [ "Thursday", "Wednesday" ]]
[[ "August", "July" ], [3], [7], [ "Wednesday", "Thursday" ]]
etc. since the order within each cube doesn't matter.
(Thu) 2019-07-11 [[ "May", "June" ], [3], [8], [ "Saturday", "Friday" ]]
[[ "May", "June" ], [8], [3], [ "Saturday", "Friday" ]]
since the two 1 cubes could be either way.
(Sun) 2019-10-27 [[ "January", "February" ], [3], [6], [ "Friday", "Saturday" ]]
(Wed) 2019-05-01 [[ "March", "April" ], [8], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [6], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [9], [3], [ "Monday", "Tuesday" ]]
since the 0 cube could have either the 8 side or the 6 side facing up, and the 6 could also be considered a 9.
(Sat) 2019-08-24 [[ "February", "January" ], [8], [5], [ "Sunday" ]]
27
en2019-10-27
debería ir a36
, no32
.Respuestas:
C (glibc) ,
327319286 bytes(Se agregaron algunos saltos de línea para mayor claridad)
f
toma un mes (1–12) y un día (1–31). Imprime en stdout. Pruébalo en línea!Casos de prueba:
Sin golf
Cubos de dígitos
Estas son las posibilidades para los dígitos:
El siguiente mapeo parece ser la mejor opción para jugar al golf:
Trucos
strftime
está destinado a ser llamado con astruct tm
como entrada. En cambio, declaroint S[9]
y usoS[4]
comotm_mon
yS[6]
comotm_wday
. Esto funciona si la biblioteca C usa la misma lista de miembros de estructura que el estándar ISO.s[99]
se usa para almacenar varias cadenasstrftime
, pero al convertirlo en unaint
matriz se ahorran algunos bytes en la indexación.fuente
JavaScript (ES6), 142 bytes
Toma entrada comom o n t h rea y0 0 rea y1
(year, month, day0, day1)
donde(month0, month1, day0, day1, weekDay0, weekDay1)
Pruébalo en línea!
fuente