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"
เป็น padding ที่คล้ายกันมีไว้เพื่อเป็นสัญลักษณ์หลักเดียวสำหรับเดือนมีนาคมคือถูกส่งกลับเป็น3
"03"
p[#, If[Length@# < 5, 4, 5]]
แผ่นปีด้วยศูนย์ที่จะถึงความยาวของสตริง 4 หรือ 5 หลัก ในกรณีนี้มกราคมคือ1
ถูกส่งคืนเป็น `" 00001 "'
"" <>...
เข้าร่วมสตริง ในกรณีนี้มันกลับ"000010307"
มา
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
ส่งกลับกรณีเหล่านั้นในระหว่างวันที่ 1920 ที่เป็น palindromes และช่วงเวลา
02-29
มีอยู่สำหรับปีที่หารด้วย 400 หรือ (หารด้วย 4 และไม่หารด้วย 100)