WolframLanguage (Mathematica) 187 bytes
Puede haber alguna reducción en el tamaño que se encuentra. Explicación a seguir ...
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]&
Casos de prueba
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"} *)
Explicación de código
DayRange[d@#,d@#2]
devuelve todas las fechas entre {10011, 10, 1}
y {10017, 1, 1}
. En este caso, devuelve aproximadamente 5 años, 4 meses de fechas (precisamente 1920 fechas). Los años bisiestos se tienen en cuenta.
Las fechas se devuelven en el formato estándar Wolfram. Por ejemplo, la primera fecha aparecerá como DateObject[List[1,1,1],"Day","Gregorian",-5.
] `
#[[1]] & /@
eliminará la parte de la fecha, en cada fecha, que nos concierne. En el ejemplo, DateObject[List[1,3,7],"Day","Gregorian",-5.]
devuelve la fecha abreviada, {1,3,7}
.
t/@p[#3,2]}
o ToString/@Padleft[#3,2]
rellena el tercer elemento, a saber, el 7 que se encuentra "para el 7º día del mes" como "07"
. Se proporciona un relleno similar para el símbolo de un solo dígito para el mes de marzo, es decir, 3
se devuelve como "03"
.
p[#, If[Length@# < 5, 4, 5]]
rellena el año con ceros para alcanzar la longitud de una cadena de 4 o 5 dígitos. En este caso, enero, a saber 1
, se devuelve como "00001" '.
"" <>...
une las cuerdas. En este caso, vuelve "000010307"
.
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
devuelve esos casos, entre las fechas de 1920, que son palíndromos y números primos.
02-29
solo existe para años que son divisibles por 400 o (divisibles por 4 y no divisibles por 100).