Quelqu'un a donné à ma femme un calendrier décoratif composé de quatre cubes. Ici, il affiche la date d'aujourd'hui (à compter de la publication de ce défi) sur le devant:
Quand je l'ai vu pour la première fois, je l'ai regardé sous le mauvais angle (directement au-dessus) et je n'ai pas pu comprendre pourquoi il donnait ces informations:
[["February", "January"], [3], [7], ["Monday", "Tuesday"]]
Votre travail consiste à reproduire mon erreur pour n'importe quelle date en 2019.
Défi
Écrivez un programme ou une fonction qui prend n'importe quelle date à partir de 2019 et affiche ce qui apparaît en haut de tous les cubes lorsque cette date est affichée face à l'avant du calendrier.
Voici les six faces de tous les cubes. Pour afficher un, il 6
vous suffit de retourner la 9
tête en bas. Le 0
est verticalement symétrique, donc 0
à l'envers est toujours 0
. Il peut y avoir plus d'une réponse correcte pour certaines dates (par exemple, n'importe quel 11 du mois aura plus d'une façon d'utiliser les cubes, et 0
ainsi de suite) afin que vous puissiez afficher n'importe quelle réponse correcte.
Règles
- Failles standard interdites.
- Le format d'entrée / sortie est flexible.
- La sortie doit être en ordre par cube, mais pas dans un cube. L'ordre doit d'abord être le cube du mois, puis les deux cubes numériques, suivis du cube du jour de la semaine. Mais lorsqu'un cube a deux éléments au-dessus, ces deux éléments peuvent être dans l'un ou l'autre ordre.
- Vous pouvez remplacer
January
àDecember
0-11 ou 1-12 si vous le souhaitez. - Vous pouvez remplacer les jours de la semaine par 0-6 ou 1-7 si vous le souhaitez, et vous pouvez commencer la semaine sur
Sunday
ouMonday
(mais vous ne pouvez pas commencer la semaine un autre jour - c'est PPGC, pas une sorte de ville folle.) - C'est du code-colf . Le moins d'octets pour chaque langue gagne.
- Explications encouragées.
Cas de test
(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
devrait aller36
, non32
.Réponses:
C (glibc) ,
327319286 octets(Certains sauts de ligne ont été ajoutés pour plus de clarté)
f
prend un mois (1–12) et un jour (1–31). Imprime à stdout. Essayez-le en ligne!Cas de test:
Non golfé
Cubes de chiffres
Ce sont les possibilités pour les chiffres:
La cartographie suivante semble être le meilleur choix pour le golf:
Cheats
strftime
est destiné à être appelé avec unestruct tm
entrée as. Au lieu de cela, je déclareint S[9]
et utilise auS[4]
furtm_mon
et àS[6]
mesuretm_wday
. Cela fonctionne si la bibliothèque C utilise la même liste de membres de structure que la norme ISO.s[99]
est utilisé pour stocker diverses chaînesstrftime
, mais en faire unint
tableau économise quelques octets dans l'indexation.la source
JavaScript (ES6), 142 octets
Prend l'entrée commem o n t h est indexé 1, réune y0 est le premier chiffre de la date et réune y1 est le deuxième chiffre.
(year, month, day0, day1)
oùRenvoie0 pour dimanche. Si le deuxième jour de la semaine est vide, il est défini sur- 1 .
(month0, month1, day0, day1, weekDay0, weekDay1)
où les jours de la semaine sont indexés à 0 avecEssayez-le en ligne!
la source