Wolfram语言(Mathematica)187字节
可能会发现尺寸有所减小。后续说明...
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]&
测试用例
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”} *)
代码说明
DayRange[d@#,d@#2]
返回{10011, 10, 1}
和之间的所有日期{10017, 1, 1}
。在这种情况下,它将返回大约5年零4个月的日期(精确为1920个日期)。考虑到年。
日期以Wolfram标准格式返回。例如,第一个日期将显示为DateObject[List[1,1,1],"Day","Gregorian",-5.
]`
#[[1]] & /@
将删除每个日期中与我们有关的部分。在示例中,DateObject[List[1,3,7],"Day","Gregorian",-5.]
返回缩写日期{1,3,7}
。
t/@p[#3,2]}
或ToString/@Padleft[#3,2]
填充第三个元素,即“第7个月的7” "07"
。为三月份的一位数字符号提供了类似的填充,即3
以返回"03"
。
p[#, If[Length@# < 5, 4, 5]]
用零填充年份以达到4或5位数字字符串的长度。在这种情况下,一月,即1
返回为“ 00001”。
"" <>...
连接字符串。在这种情况下,它返回"000010307"
。
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
返回1920年日期中的回文和素数的那些案例。
02-29
仅存在可被400整除或(被4整除而不能被100整除)的年份。