Scheint so, als hätten wir diesen noch nicht, also los geht's:
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die ein Datum als Eingabe verwendet und die Tageszahl des Jahres ausgibt. Sie dürfen dafür keine Builtins verwenden!
Regeln
- Wie üblich können Sie ein vollständiges Programm oder eine Funktion schreiben.
- Das Format der Eingabe liegt bei Ihnen, muss jedoch ein Jahr, einen Monat und einen Tag enthalten. Stellen Sie klar, welche Ihre Lösung verwendet!
- Keine datumsbezogenen Buildins erlaubt! Du musst die Arbeit alleine machen. Builtins, die nicht mit Datumsoperationen zusammenhängen, sind in Ordnung.
- Basis für die Berechnung ist der Gregorianische Kalender.
- Sie müssen Schaltjahre berücksichtigen.
- Sie müssen nur Jahre im Bereich [1, 9999] behandeln
- Standardlücken sind verboten.
- Die niedrigste Byteanzahl gewinnt!
Testfälle
Das Eingabeformat ist hier JJJJ / MM / TT
2016/07/05 -> 187
2000/03/28 -> 88
0666/06/06 -> 157
6789/10/11 -> 284
0004/04/04 -> 95
1337/07/13 -> 194
Viel Spaß beim Codieren!
Antworten:
Pyth, 31 Bytes
Vielen Dank an @Dennis und @Jakube für den Schaltjahresanteil . Die Eingabe erfolgt JJJJ, MM, TT in separaten Zeilen.
Testsuite .
quelle
JavaScript ES6,
8169 BytesAngenommen, die Monate basieren auf 1, sonst könnte ich 2 Bytes sparen.
Bearbeiten: 12 Bytes mit dem Tipp von @ user81655 gespeichert.
quelle
C
961028961 Bytesquelle
Python 3,
152148150 BytesNimmt Daten im Format "MD YYYY".
quelle
print n[m-1]+d
Python 2,
10082 BytesEin Python-Port von Neils Antwort:
Wie bei der vorherigen Antwort ergibt das Hinzufügen von 17 Bytes (insgesamt 99 Bytes) ein vollständiges Programm:
Vorherige Antwort:
Als anonymes Lambda:
Kann für eine 2-Byte-Strafe in ein benanntes Lambda konvertiert werden. Alternativ kann ein vollständiges Programm (Eingabe im Format
D,M,Y
) für 117 Bytes erstellt werden:quelle
Python 3, 125 Bytes
Ein anderer Ansatz zu diesem Problem. Der Code nutzt die Vorteile der Ausführungsprioritäten der Booleschen Algebra von Python, und da dies
not
die letzte Operation ist, erfolgt die Konvertierung in den Booleschen Wert automatisch. Wenn die Summierung abgeschlossen ist, wird der Boolesche Wert als 1 oder 0 behandelt. Das Eingabeformat lautet "JJ MM TTTT". Eingabesystem inspiriert von @ SteveEckerts ähnlichem.Eine andere Form als Funktion, 91 Bytes
In diesem Fall beträgt die Eingabe drei Ganzzahlen, wobei der Monat zwischen 0 und 11 liegt. Dies würde auch in Python 2 funktionieren.
quelle
Excel, 106 Bytes
Übernimmt die Eingabe in drei Zellen
A1
= Jahr,B1
= Monat,C1
= Tag.1
wenn LeapYear, sonst0
Vielfaches von
30
, WÄHLEN Sie zusätzliche Tage plus Tage im MonatEvolution:
quelle