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]
、3番目の要素、つまり、「月の7日目」の7をのように埋め込み"07"
ます。同様のパディングが3月の1桁の記号に提供さ3
れ"03"
ます。つまり、として返されます。
p[#, If[Length@# < 5, 4, 5]]
4桁または5桁の文字列の長さに達するまで年をゼロで埋めます。この場合、1月、つまり1
が `" 00001 "'として返されます。
"" <>...
文字列を結合します。この場合、を返します"000010307"
。
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
1920年の日付のうち、回文と素数であるケースを返します。
02-29
400で割り切れる年または(4で割り切れ、100で割り切れない)年だけ存在します。