WolframLanguage (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 월의 한 자리 기호에 대해 유사한 패딩이 제공 3
됩니다 "03"
. 즉, 로 반환됩니다 .
p[#, If[Length@# < 5, 4, 5]]
연도를 0으로 채워 4 자리 또는 5 자리 문자열의 길이에 도달합니다. 이 경우 1 월, 즉 1
‘00001’이 반환됩니다.
"" <>...
문자열을 조인합니다. 이 경우을 반환합니다 "000010307"
.
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
1920 년 날짜 중 회문 및 소수 인 사례를 반환합니다.
02-29
400으로 나눌 수 있거나 4로 나눌 수 있고 100으로 나눌 수없는 년 동안 만 존재합니다.