WolframLanguage (Mathematica) 187 byte
Potrebbe esserci una certa riduzione delle dimensioni. Spiegazione da seguire ...
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]&
Casi test
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"} *)
Spiegazione del codice
DayRange[d@#,d@#2]
restituisce tutte le date tra {10011, 10, 1}
e {10017, 1, 1}
. In questo caso, restituisce circa 5 anni, 4 mesi di date (precisamente 1920 date). Gli anni bisestili sono presi in considerazione.
Le date vengono restituite nella formattazione standard di Wolfram. Ad esempio, la prima data apparirà come DateObject[List[1,1,1],"Day","Gregorian",-5.
] `
#[[1]] & /@
rimuoverà la parte della data, in ciascuna data, che ci riguarda. Nell'esempio, DateObject[List[1,3,7],"Day","Gregorian",-5.]
restituisce la data abbreviato, {1,3,7}
.
t/@p[#3,2]}
o ToString/@Padleft[#3,2]
riempie il terzo elemento, vale a dire, il 7 in piedi "per il 7 ° giorno del mese" come "07"
. Un'imbottitura simile viene fornita per il simbolo a una cifra per il mese di marzo, ovvero 3
viene restituito come "03"
.
p[#, If[Length@# < 5, 4, 5]]
sposta l'anno con zeri per raggiungere la lunghezza di una stringa di 4 o 5 cifre. In questo caso, gennaio, vale a dire 1
, viene restituito come "" 00001 "'.
"" <>...
unisce le stringhe. In questo caso, ritorna "000010307"
.
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
restituisce quei casi, tra le date del 1920, che sono palindromi e numeri primi.
02-29
esiste solo per anni che sono divisibili per 400 o (divisibili per 4 e non divisibili per 100).