Ceci est inspiré par l'une des questions de Downgoat dans Sandbox, où j'ai suggéré qu'il inclue le 31 avril comme jour Pi pour les personnes qui utilisent le format jour / mois, seulement pour lui pour m'informer qu'il n'y a pas de 31 avril!
Étant donné une chaîne de date au format mois / jour qui peut ne pas être valide, affichez la date correcte à l'aide du survol. (Survolez d'abord le mois, puis le jour).
Exemples:
"15/43" - Cela se lit comme le 43e jour du 15e mois. Tout d'abord, nous reportons le mois sur l'année suivante, nous nous retrouvons donc avec 3 (mars). Maintenant, comme le mois de mars ne compte que 31 jours, nous reportons les jours supplémentaires au mois d'avril, nous affichons donc la date réelle comme "4/12" (12 avril).
"3/16" - Ceci est une date valide (16 mars). Retournez-le tel quel.
"12/64" - Ah, tant de bons souvenirs du 64 décembre ... Décembre a 31 jours, janvier a 31 jours, donc ce que je veux dire c'est "2/2" (2 février).
"19/99" - Tout d'abord, le 19 devient un 7 (juillet). Juillet a 31 jours, août a 31 jours, septembre a 30 jours, donc la sortie est "10/7" (7 octobre).
"1/99999" - Une année compte 365 jours. 99999 (mod 365) = 354. Le 354 jour de l'année est "12/20" .
"9999999/10" - Apparemment, 9999999 (mod 12) = 3, c'est donc "3/10" (10 mars).
Critères:
Le mois d'entrée est un entier> 0. Le jour d'entrée est un entier> 0. L'année n'a jamais besoin d'être spécifiée, car il n'y a pas d'années bissextiles à gérer.
Mise à jour:
Comme je pense que cela simplifierait trop le défi, les fonctions de calendrier, telles que celles de la classe Java Calendar , sont interdites. Les fonctions d'analyse et de formatage des dates sont cependant toujours autorisées.
1/99999
devrait céder12/19
je pense.Réponses:
LabVIEW, 32 primitives LabVIEW
la source
C #,
269223Edit : fixe pour fonctionner pour des cas comme 24/1, 36/1, etc. et golfé un peu. Merci pour les commentaires, il y a plusieurs endroits que j'ai économisés un peu!
Non golfé:
la source
24/1
.Console.Write
plus quereturn
, et en C # j'utiliseraischar[]
en remplacementstring
, mais c'est la même quantité de caractères et rend le fractionnement/
plus problématique. Mais, votre note sur le dictionnaire m'a conduit à une bien meilleure version!R,
208182 octetsObtenez le mois en divisant par 12, puis bouclez, en supprimant le nombre de jours du mois en cours jusqu'à ce que vous obteniez un nombre négatif., Inversez la dernière étape et imprimez.
Sur plusieurs lignes (besoin d'utiliser un fichier et de le source):
la source
PHP> = 5,5, 181 octets
PHP prend presque en charge le rollover avec des instructions d'analyse et de formatage de date uniquement. Par exemple:
Cependant, une fois que l'un des nombres est supérieur à 100, PHP rejette l'analyse et renvoie une erreur (probablement pour une raison arbitraire). Donc, la théorie avec cette réponse est de la ramener là où PHP va l'analyser, puis de la soumettre
date_create_from_format()
.Non golfé:
Essayez-le en ligne
la source
$argv
ou STDIN.$t
à$argv[1]
et maintenant il lit à partir de l'entrée de ligne de commande.JavaScript (ES6), 106 octets
Explication
Tester
Afficher l'extrait de code
la source
Réponse non concurrente - Bash + coreutils, 55
"Les fonctions d'analyse et de formatage des dates sont toujours autorisées" - je suppose que cela
date
utilitaire est autorisé.L'entrée est lue à partir de la ligne de commande, par exemple:
Ceci n'est pas en concurrence car la commande date s'étend à quelque chose comme ça qui ajoute un certain nombre de jours:
la source
date.add(875)
augmenter la date de 875 jours. C'est surtout ce que j'allais chercher.date
commande entièrement développée ici estdate -d1-3-1+42day +%-m/%-d
, donc c'est exactement ce qu'elle fait. Je suppose que c'est une réponse non concurrente alors :(