Ein gemeinsames Jahr ist ein Jahr, das kein Schaltjahr ist und in dem der erste und der letzte Tag des Jahres am selben Tag liegen. Ein besonderes gemeinsames Jahr beginnt an einem Montag und endet auch an einem Montag.
Ihre Herausforderung besteht darin, ein Programm / eine Funktion zu erstellen, die, wenn ein Jahr als Eingabe angegeben wird, das nächste spezielle gemeinsame Jahr findet und sich selbst ausgibt, wenn es ein gemeinsames Jahr ist. Wenn das Jahr dem vorhergehenden so nahe kommt wie das daneben, wird das größere ausgegeben.
Eingang
Eine Ganzzahl, die das Jahr darstellt, gegen das im Bereich getestet werden soll 1600 <= x <= 2100
.
Ausgabe
Eine Ganzzahl, die das nächste gemeinsame Sonderjahr darstellt.
Testfälle
2017 -> 2018
2018 -> 2018
1992 -> 1990
1600 -> 1601
2100 -> 2103
1728 -> 1731 (lies between 1725 and 1731)
Anmerkungen
Alle 54 Jahre im angegebenen Bereich sind bereits im verlinkten Wikipedia-Artikel aufgeführt. Ich werde sie auch hier als Referenz bereitstellen:
1601, 1607, 1618, 1629, 1635, 1646, 1657, 1663, 1674, 1685, 1691
1703, 1714, 1725, 1731, 1742, 1753, 1759, 1770, 1781, 1787, 1798
1810, 1821, 1827, 1838, 1849, 1855, 1866, 1877, 1883, 1894, 1900
1906, 1917, 1923, 1934, 1945, 1951, 1962, 1973, 1979, 1990
2001, 2007, 2018, 2029, 2035, 2046, 2057, 2063, 2074, 2085, 2091
2103 (Needed for 2097 to 2100)
6, 11, 11
. IE 6 Jahre nach dem ersten ist ein anderer, 11 Jahre danach ist ein anderer, 11 Jahre danach ist ein anderer, 6 Jahre danach ist ein anderer usw.a year that is not a leap year and where the first and last day of the year are on the same day
Der zweite Teil dieser Definition ist redundant. Alle Nicht-Schaltjahre beginnen und enden am selben Tag und sind genau 52 Wochen und ein Tag (365 Tage) lang.Antworten:
Gelee , 30 Bytes
Eine monadische Verbindung, die ein ganzzahliges Jahr nimmt und zurückgibt.
Probieren Sie es online aus! oder sehen Sie sich eine Testsuite an .
Wie?
Ähnlich wie bei anderen Antworten wird aus den Inkrementen die Liste der für die Eingabedomäne erforderlichen Jahre erstellt und das maximale Jahr mit minimaler absoluter Differenz zur Eingabe ermittelt.
quelle
PHP, 67 Bytes
Probieren Sie es online aus!
oder
Probieren Sie es online aus!
Erweitert
Datum
quelle
$i=($i<1)-$i;
Python 2 ,
129124118 BytesProbieren Sie es online aus! oder Alle Testfälle ausprobieren
Zuerst wird die Sequenz generiert (umgekehrt)
a
und dann2401 - input_year
als Startwert verwendet, der über die Sequenz subtrahiert wird.Auf diese Weise enthält die Liste
o
die Unterschiede zwischen allen gemeinsamen Jahren und der Eingabe. Das nächste Jahr ist die Zahl, die der Null am nächsten liegt (positiv oder negativ). Anschließend wird sie extrahiert(min, key=abs)
und zur Eingabe hinzugefügt.Mit
datetime
119 BytesProbieren Sie es online aus!
quelle
05AB1E , 41 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
JavaScript (ES6), 77 Byte
quelle
Mathematica, 70 Bytes
Erzeugt eine Liste aller gemeinsamen Sonderjahre bis zum Jahr 5040 (= 7!) Und findet dann das der Eingabe am nächsten liegende Jahr, wobei bei einem Gleichstand das Maximum verwendet wird.
quelle
Java 7, 217 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
int d(int y, int x){}
zud(int y){int x = 1;...}
x
wird1
,x
ist es falsch , wenn ich ihn jedes Mal oben in der Methode zurücksetze , und der rekursive Aufruf würde fehlschlagen.MATL ,
3231 BytesProbieren Sie es online aus! Oder überprüfen Sie alle Testfälle
quelle
C #, 183 Bytes
Um den Ball ein wenig ins Rollen zu bringen, habe ich hier eine eigene Implementierung durchgeführt. Ich bin mir ziemlich sicher, dass es immer noch gespielt werden kann, wenn jemand sich frei fühlen möchte, als neue Antwort zu posten.
Probieren Sie es online aus!
Vollversion / Formatierte Version, hier werden auch alle Ausgaben für den angegebenen Bereich angezeigt, wenn sie ausgeführt werden.
quelle
Ruby, 145 Bytes
Definiert ein Lambda, das das Startjahr als Eingabe verwendet -
f[2017] => 2018
Ich muss die Ruby-Standardbibliothek lieben!
wday==1
ist genauso langmonday?
und unendlich weniger cool :). Die spezielle Prüfung des gemeinsamen Jahres erfolgt durch die Tatsache, dass in einem gemeinsamen Jahr, das am Montag beginnt, der 1. Juni ein Freitag ist ("Freitag" ist der gleich kürzeste Tagesname!).Leider ist es nicht so gut, in beide Richtungen zu suchen.
quelle