WolframLanguage (Mathematica) 187 Bytes
Möglicherweise ist eine gewisse Größenreduzierung festzustellen. Erklärung folgt ...
t=ToString;p=PadLeft;d=DateObject;Cases[""<>{t/@p[#,If[Length@#<5,4, 5]],t/@ p[#2,2],t/@p[#3,2]}&@@@(IntegerDigits/@#[[1]]&/@DayRange[d@#,d@#2]),x_/;PalindromeQ@x&&PrimeQ@ToExpression@x]&
Testfälle
t = ToString; p = PadLeft; d = DateObject;
Cases["" <> {t /@ p[#, If[Length@# < 5, 4, 5]], t /@ p[#2, 2],
t /@ p[#3, 2]} & @@@ (IntegerDigits /@ #[[1]] & /@ DayRange[d@#, d@#2]),
x_ /; PalindromeQ@x && PrimeQ@ToExpression@x] &[{10011, 10, 1}, {10017, 1, 1}]
(* {"100111001", "100131001", "100161001"} *)
Erklärung des Codes
DayRange[d@#,d@#2]
Gibt alle Daten zwischen {10011, 10, 1}
und zurück {10017, 1, 1}
. In diesem Fall werden ungefähr 5 Jahre und 4 Monate (genau 1920) zurückgegeben. Schaltjahre werden berücksichtigt.
Die Daten werden in Wolfram-Standardformatierung zurückgegeben. Das erste Datum wird beispielsweise als DateObject[List[1,1,1],"Day","Gregorian",-5.
] `angezeigt
#[[1]] & /@
wird den Teil des Datums in jedem Datum entfernen, der uns betrifft. Gibt im Beispiel DateObject[List[1,3,7],"Day","Gregorian",-5.]
das abgekürzte Datum zurück {1,3,7}
.
t/@p[#3,2]}
oder ToString/@Padleft[#3,2]
füllt das dritte Element auf, nämlich die 7, die "für den 7. Tag des Monats" steht "07"
. Eine ähnliche Auffüllung ist für das einstellige Symbol für den Monat März vorgesehen, dh es 3
wird zurückgegeben als "03"
.
p[#, If[Length@# < 5, 4, 5]]
füllt das Jahr mit Nullen auf, um die Länge einer 4- oder 5-stelligen Zeichenfolge zu erreichen. In diesem Fall wird der Januar nämlich 1
als "00001" zurückgegeben.
"" <>...
verbindet die Saiten. In diesem Fall wird zurückgegeben "000010307"
.
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
gibt jene Fälle unter den 1920er Daten zurück, die Palindrome und Primzahlen sind.
02-29
existiert nur für Jahre, die durch 400 oder (teilbar durch 4 und nicht teilbar durch 100) teilbar sind.