Pour les calendriers grégoriens, le format de la date varie d'un pays à l'autre. Il existe trois principaux formats reconnus:
YY-MM-DD
(big-endian)DD-MM-YY
(petit endian)MM-DD-YY
(moyen-endien)
Votre tâche consiste à écrire un programme qui, étant donné une chaîne d'entrée représentant une date, génère tous les formats de date possibles par lesquels cette chaîne peut être interprétée comme une date.
Règles
- La date d'entrée est au format
xx-xx-xx
, où chaque champ est composé de deux chiffres et complété par un zéro. - La date est toujours valide (vous ne pouvez donc pas obtenir des choses comme 14-13-17)
- La date est toujours au moins l'un des formats ci-dessus (donc vous ne pouvez pas obtenir des choses comme 17-14-11)
- Parce que nous sommes en fait dans un monde parallèle, il y a 31 jours pour chaque mois de l'année , et par conséquent aucune année bissextile
- La date est comprise entre le 01 janvier 2001 et le 31 décembre 2099
- S'il n'y a qu'un seul format pour la date, le code doit l'imprimer uniquement (seuls les retours à la ligne sont autorisés)
- S'il existe plusieurs formats pour la date, ils doivent être séparés par une virgule, un espace, une nouvelle ligne ou une combinaison de ceux-ci.
- Vous devez afficher le ou les noms exacts du ou des formats. L'utilisation de valeurs arbitraires distinctes n'est pas autorisée.
- Aucun caractère de début ou de fin autre qu'un espace de fin n'est autorisé
- La sortie doit être en minuscules
- Vous n'êtes pas autorisé à utiliser les fonctions de date ou de calendrier intégrées
- Les formats de sortie ne doivent pas être triés
Exemples
Input Output
30-05-17 big-endian, little-endian
05-15-11 middle-endian
99-01-02 big-endian
12-11-31 big-endian, little-endian, middle-endian
02-31-33 middle-endian
Il s'agit de code-golf, donc le code le plus court en octets l'emporte. Des explications sont encouragées.
there are 31 days for every month of the year, and consequently no leap years
Donc, cela signifie qu'une bibliothèque de dates est effectivement inutile pour cela alors?Réponses:
05AB1E , 40 octets
Essayez-le en ligne!
Explication
la source
Python 2 , 123 octets
Essayez-le en ligne!
Python 2 , moins l'analyse en entrée, 123 octets
Essayez-le en ligne!
la source
,
.JavaScript (ES6),
121119118112 octetsRenvoie une chaîne délimitée par des espaces avec un espace de fin.
Comment?
Nous divisons l'entrée en a , b et c . Parce que la date est garantie d'être valide, nous savons avec certitude que b est inférieur à 32. Par conséquent, il suffit de tester si a est inférieur à 13 pour valider le format moyen-endien. Les formats little-endian et big-endian nécessitent que b soit inférieur à 13 et un autre test sur a et c respectivement pour valider la journée.
D'où les 3 tests:
Cas de test
Afficher l'extrait de code
la source
Bash,
240125116112 octetsGolfé.
Merci à manatwork pour quelques conseils
Enregistré 9 octets supprimant la vérification pour moins de 32 dans la réponse Arnauld follwing milieu-endian
4 octets enregistrés en utilisant différentes variables au lieu d'un tableau
Essaye-le!
la source
C #, 180 octets
Les sorties avec uniquement des valeurs séparées par des espaces peuvent également avoir des espaces de début et de fin. S'actualisera lorsque l'OP aura clarifié ce point si nécessaire.
Version complète / formatée:
la source
No leading or trailing characters others than a trailing space are allowed
PHP, 151 octets
Cas de test
la source
Lot, 138 octets
Vaguement basé sur la réponse de @ ovs.
la source
Java 232 octets
Voici une version plus agréable
Je ne savais pas vraiment comment formater cette partie ...
la source
String e="-endian",b="big"+e,m="middle"+e,l="little"+e;
.PHP, 131 octets
la source