Dies ist inspiriert von einer der Fragen von Downgoat in Sandbox, in der ich vorgeschlagen habe, den 31. April als Pi-Tag für Personen mit Tag / Monat-Format aufzunehmen, nur damit er mir mitteilt, dass es keinen 31. April gibt!
Bei einer Datumszeichenfolge im Format Monat / Tag , die möglicherweise ungültig ist, geben Sie das richtige Datum mit dem Rollover aus. (Zuerst den Monat und dann den Tag verschieben).
Beispiele:
"15/43" - Dies ist der 43. Tag des 15. Monats. Zuerst verschieben wir den Monat auf das nächste Jahr, sodass wir am Ende 3 (März) haben. Da der März nur 31 Tage hat, verlängern wir die Verlängerungstage auf April, sodass wir das aktuelle Datum als "4/12" (12. April) ausgeben .
"3/16" - Dies ist ein gültiges Datum (16. März). Geben Sie es so zurück, wie es ist.
"12/64" - Ah, so viele schöne Erinnerungen vom 64. Dezember ... Der Dezember hat 31 Tage, der Januar hat 31 Tage, also meine ich wirklich "2/2" (2. Februar).
"19/99" - Zuerst wird die 19 eine 7 (Juli). Juli hat 31 Tage, August hat 31 Tage, September hat 30 Tage, die Ausgabe ist also "10/7" (7. Oktober).
"1/99999" - Ein Jahr hat 365 Tage. 99999 (Mod 365) = 354. Der 354. Tag des Jahres ist "12/20" .
"9999999/10" - Anscheinend 9999999 (Mod 12) = 3, dies ist also "3/10" (10. März).
Kriterien:
Der Eingabemonat ist eine Ganzzahl> 0. Der Eingabetag ist eine Ganzzahl> 0. Das Jahr muss nie angegeben werden, da keine Schaltjahre zu behandeln sind.
Aktualisieren:
Da ich der Meinung bin, dass dies die Herausforderung übermäßig vereinfachen würde, sind Kalenderfunktionen wie die in der Java Calendar- Klasse gesperrt. Datumsanalyse- / Formatierungsfunktionen sind jedoch weiterhin zulässig.
1/99999
sollte nachgeben,12/19
denke ich.Antworten:
LabVIEW, 32 LabVIEW-Grundelemente
quelle
C #,
269223Bearbeiten : Wurde behoben, um für Fälle wie 24/1, 36/1 usw. zu funktionieren und ein wenig Golf zu spielen. Vielen Dank für die Kommentare, es gibt mehrere Orte, die ich ein bisschen gespeichert habe!
Ungolfed:
quelle
24/1
.Console.Write
was mehr ist alsreturn
, und in C # würde ichchar[]
als Ersatz für verwendenstring
, aber es ist die gleiche Menge an Zeichen, und macht das Aufteilen auf das/
problematischere. Ihre Anmerkung zum Wörterbuch hat mich jedoch zu einer viel besseren Version geführt!R
208182 BytesErmitteln Sie den Monat, indem Sie ihn durch 12 teilen. Entfernen Sie dann die Anzahl der Tage des aktuellen Monats, bis Sie eine negative Zahl erhalten. Kehren Sie den letzten Schritt um und drucken Sie.
In mehreren Zeilen (muss eine Datei verwenden und als Quelle dienen):
quelle
PHP> = 5,5, 181 Bytes
PHP unterstützt Rollover fast nur mit Anweisungen zum Parsen und Formatieren von Datumsangaben. Beispielsweise:
Sobald jedoch eine der beiden Zahlen größer als 100 wird, lehnt PHP das Parsen ab und gibt einen Fehler zurück (wahrscheinlich aus einem beliebigen Grund). Die Theorie mit dieser Antwort ist also, sie wieder dahin zu bringen, wo PHP sie parsen wird, und sie dann zu übermitteln
date_create_from_format()
.Ungolfed:
Probieren Sie es online aus
quelle
$argv
oder STDIN erhalten.$t
,$argv[1]
und liest jetzt von der Befehlszeileneingabe.JavaScript (ES6), 106 Byte
Erläuterung
Prüfung
Code-Snippet anzeigen
quelle
Nicht konkurrierende Antwort - Bash + Coreutils, 55
"Datumsanalyse- / Formatierungsfunktionen sind jedoch weiterhin zulässig" - Ich gehe davon aus, dass dies bedeutet, dass das
date
Dienstprogramm zulässig ist.Die Eingabe wird von der Kommandozeile gelesen, zB:
Dies ist nicht konkurrierend, da der Datumsbefehl zu etwas erweitert wird, das eine Anzahl von Tagen hinzufügt:
quelle
date.add(875)
das Datum nicht um 875 Tage erhöht wird. Das ist meistens das, wonach ich gesucht habe.date
Befehl ist hierdate -d1-3-1+42day +%-m/%-d
, also macht er genau das. Ich denke, das ist dann eine nicht konkurrierende Antwort :(