Ihre Herausforderung ist denkbar einfach. Geben Sie bei Eingabe eines Jahres alle Monate in diesem Jahr aus, die einen Freitag, den 13., gemäß dem gregorianischen Kalender enthalten. Obwohl der Gregorianische Kalender erst 1582 eingeführt wurde, werden wir der Einfachheit halber so tun, als wäre er seit 0001 n. Chr. In Gebrauch.
Regeln
Vollständige Programme oder Funktionen sind zulässig.
Sie können Eingaben als Funktionsargumente, von STDIN oder als Befehlszeilenargumente übernehmen.
Sie dürfen keine eingebauten Datums- und Zeitangaben verwenden.
Sie können davon ausgehen, dass die Eingabe ein gültiges Jahr ist. Wenn die Eingabe kleiner als 1, keine gültige Ganzzahl oder größer als der Typ der systemeigenen Zahl Ihrer Sprache ist, müssen Sie dies nicht verarbeiten, und Sie erhalten ein undefiniertes Verhalten.
Die Ausgabe kann in Englisch oder in einem anderen für Menschen lesbaren Format erfolgen, sofern Sie den Standard angeben.
Stellen Sie sicher, dass Sie Schaltjahre berücksichtigen. Und denken Sie daran, Schaltjahre kommen nicht alle 4 Jahre vor!
Tipps
Da es so viele verschiedene Möglichkeiten gibt, möchte ich Ihnen nicht sagen, wie es geht. Es kann jedoch verwirrend sein, wo Sie anfangen sollen. Hier finden Sie einige zuverlässige Methoden, um den Wochentag anhand eines Datums zu bestimmen.
Wählen Sie ein Startdatum mit einem bekannten Wochentag aus, z. B. Montag, 1. Januar 0001, und ermitteln Sie, wie weit die beiden Tage voneinander entfernt sind. Nehmen Sie dann die Nummer Mod 7.
Beispiel IO
2016 --> May
0001 --> 4, 7
1997 --> Jun
1337 --> 09, 12
123456789 --> January, October
Wie üblich ist dies Codegolf, daher gelten Standardlücken, und die kürzeste Antwort gewinnt.
0001 --> 5
:? Laut dieser Seite (und meinem Code) sollte es April und Juli sein.