वोल्फ्रामलंगेज (गणितज्ञ) 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 तारीखें) देता है। लीप वर्ष को ध्यान में रखा जाता है।
वुल्फ्राम-मानक स्वरूपण में तिथियां वापस आ जाती हैं। उदाहरण के लिए, पहली तारीख के रूप में दिखाई देगा 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 से विभाज्य नहीं हैं)।