HINWEIS: Da ich selbst Niederländer bin, liegen alle Daten dd-MM-yyyy
in der Beschreibung der Herausforderung und in den Testfällen im niederländischen Format vor.
Herausforderung:
Eingänge:
Startdatum ; Enddatum ; Ziffer
Ausgaben:
Alle Daten im Bereich (auch auf beiden Seiten), deren Datum eindeutige Ziffern enthält.
Beispiel:
Eingänge: Startdatum: 12-11-1991
; Enddatum 02-02-1992
:; Ziffer:4
Ausgänge:
Mit führenden Nullen für Tage / Monate:
[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Ohne führende Nullen für Tage / Monate:
[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]
Herausforderungsregeln:
- Die Eingabe- und Ausgabedaten können in jedem vernünftigen (Datums-) Format vorliegen. Kann als Zeichenfolge in einem beliebigen
dMy
Format (einschließlich optionaler Trennzeichen), als Liste mit drei Ganzzahlen, als systemeigenes Datumsobjekt Ihrer Sprache usw. ausgegeben werden. Die Ausgabe kann eine Liste / ein Array / ein Datenstrom sein, der auf STDOUT gedruckt wird, eine einzelne durch Trennzeichen getrennte Zeichenfolge usw. - Sie dürfen führende Nullen für Tage / Monate in Ihre Ausgaben einbeziehen oder ausschließen. Bitte geben Sie an, welche der beiden Antworten Sie verwenden , da dies zu unterschiedlichen Ergebnissen führt. Dh
1-1-1991
hat 2 eindeutige Ziffern, aber01-01-1991
als 3 eindeutige Ziffern. - Sie müssen sich nicht mit Schaltjahren und Unterschieden zwischen Gregorianischen und Julianischen Kalendern auseinandersetzen. Sie können davon ausgehen, dass die in den Testfällen angegebenen Datumsbereiche für Jahre, die durch 4 teilbar sind, nicht über den 28. Februar / 1. März hinausgehen.
- Die Eingabeziffer liegt garantiert im Bereich , daher ist der Umgang mit nicht spezifiziert (eine leere Liste zurückzugeben wäre am sinnvollsten, aber einen Fehler oder ein falsches Ergebnis anzugeben ist auch in Ordnung; Sie haben gewonnen muss mich nicht mit dieser Eingabe befassen).
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Es wird außerdem dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Inputs: [12-11-1991, 02-02-1992], 4
Outputs with leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Outputs without leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]
Inputs: [19-09-2019, 30-09-2019], 5
Outputs (same with and without leading 0s): [23-09-2019, 24-09-2019, 25-09-2019, 26-09-2019, 27-09-2019, 28-09-2019, 30-09-2019]
Inputs: [19-09-2019, 30-09-2019], 8
Output (same with and without leading 0s): []
Inputs: [20-06-1749, 30-06-1749], 8
Outputs with leading 0s: [23-06-1749, 25-06-1749, 28-06-1749]
Outputs without leading 0s: []
Inputs: [10-12-1969, 12-01-1970], 6
Outputs (same with and without leading 0s): [30-12-1969]
Inputs: [10-12-1969, 12-01-1970], 5
Outputs with leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 02-01-1970, 03-01-1970, 04-01-1970, 05-01-1970, 06-01-1970, 08-01-1970, 12-01-1970]
Outputs without leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 2-1-1970, 3-1-1970, 4-1-1970, 5-1-1970, 6-1-1970, 8-1-1970, 12-1-1970]
Inputs: [11-11-1111, 11-11-1111], 1
Output (same with and without leading 0s): [11-11-1111]
YYYY-MM-DDThh:mm:ss.mmm +hh:mm
:, das + hh: mm ist der zeitliche Versatz Ihres Gebietsschemas von UTC.)Antworten:
Japt , 23 Bytes
Übernimmt die Datumseingaben als Unix-Zeitstempel und gibt
0
abhängig von Ihrer Ländereinstellung eine Reihe von Zeichenfolgen mit Formatierungen und führenden Zeichen aus. Wäre in Japt v2 1 Byte kürzer, aber es scheint einen Fehler beim Konvertieren vonDate
Objekten in Zeichenfolgen zu geben.Versuch es
quelle
R , 81 Bytes
Probieren Sie es online!
Verwendet das native Datumsformat von R und hat führende Nullen an Tag und Monat.
quelle
Rot , 93 Bytes
Probieren Sie es online!
Ohne führende Nullen für Tage / Monate.
Schade , dass Red wandelt intern
09-10-2019
zu9-Oct-2019
- deshalb muss ich individuell den Tag / Monat / Jahr extrahieren.quelle
-=+*<>?!~&
, daher wird ein Leerzeichen (oder(...)[...]"..."
) benötigt.Python 3.8 (Vorabversion) , 84 Byte
-6 Bytes dank Gloweye
Eine unbenannte Funktion, die eine Liste von Zeichenfolgen (einschließlich führender Nullen) zurückgibt, die drei Argumente akzeptiert:
s
der Anfang - eindatetime.date
Objekt;e
das Ende - eindatetime.date
Objekt; undn
, die Anzahl der Tage - einint
Objekt.Probieren Sie es online!
Hinweis: Da die Funktion
datetime.date
Objekte akzeptiert , habe ich den Importcode dafür nicht gezählt (und den Import desdatetime.timedelta
Objekts umgangen, da dieser indirekt durch Subtraktion dieser Eingabeobjekte zugänglich ist).quelle
type(obj)
ist 3 Bytes kürzer alsobj.__class__
.__class__
und machte einen kurzen Kommentar. Immer gerne helfen.JavaScript (ES6), 91 Byte
Übernimmt die Eingabe als
(n)(end)(start)
, wobei die Daten als Unix-Zeitstempel in Millisekunden erwartet werden. Gibt eine durch Leerzeichen getrennte Liste von Datumsangaben im Format zurückyyyy-mm-dd
.Führende Nullen sind enthalten.
Probieren Sie es online!
quelle
PHP , 90 Bytes
Probieren Sie es online!
Dies ist mit führenden 0en. Eingaben sind Befehlsargumente (
$argv
) und Datumsangaben sind Unix-Zeitstempel in Tagen (im Grunde Standardsekunden / 86400). Ich habe dieses Format verwendet, da wir bei dieser Herausforderung keine Zeit benötigen und 1 Byte mehr Golf spielen konnten. Fügt einen Tag hinzu, der beginnt, bis das Ende erreicht ist, und druckt alle Daten mit$n
eindeutigen Ziffern, die durch_
imYmd
Format getrennt sind.Verwenden Sie auch eine 89-Byte-Alternative, die Datumsangaben im gleichen Format wie die Eingabe ausgibt (Unix-Zeitstempel in Tagen).
quelle
Java (JDK) , 86 Byte
Probieren Sie es online!
Ich entschied mich für führende
0
s.Credits
quelle
datesUntil
für 103 Bytes verwenden können . ;) Gute Antwort. Ich sehe nichts, was man persönlich golfen könnte..plusDays(1)
und entfernen Sie.forEach(System.out::println)
es. Es ist eine sehr gelungene Antwort, denn wie Sie geschrieben haben, können Daten zurückgegeben werden, da Wertobjekte und Streams zulässig sind. ;-) Ich hatte keine Ahnung, dass esdatesUntil
überhaupt existiert! Vielen Dank dafür :-)Ruby
-rdate
, 54 BytesNimmt 2 Datumsobjekte und eine Zahl als Eingabe und gibt eine Liste von Datumsobjekten als Ausgabe zurück. Verarbeitet Schaltjahre und verwendet führende Nullen.
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler)
Ohne führende 0en
104, 103 BytesProbieren Sie es online!
Mit führenden 0en
106105 BytesProbieren Sie es online!
quelle
x =>$"
in beiden Versionen für -1 entfernen . :)Kotlin, 119 Bytes
Ohne führende Nullen nimmt a zwei
java.time.LocalDate
undLong
gibt aStream
vonLocalDate
s zurückquelle
it.toString()
mit(it+"")
ein paar Bytes speichern? Ich weiß, dass dies in einigen anderen Sprachen wie Java oder .NET C # möglich ist.