WolframL Language (Mathicala) 187 byte
Có thể có một số giảm kích thước được tìm thấy. Giải thích để làm theo ...
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]&
Các trường hợp thử nghiệm
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"} *)
Giải thích mã
DayRange[d@#,d@#2]
trả về tất cả các ngày giữa {10011, 10, 1}
và {10017, 1, 1}
. Trong trường hợp này, nó trả về khoảng 5 năm, 4 tháng ngày (chính xác là 1920 ngày). Năm nhuận được tính đến.
Ngày được trả về theo định dạng chuẩn của Wolfram. Ví dụ: ngày đầu tiên sẽ xuất hiện dưới dạng DateObject[List[1,1,1],"Day","Gregorian",-5.
] `
#[[1]] & /@
sẽ loại bỏ một phần của ngày, trong mỗi ngày, liên quan đến chúng tôi. Trong ví dụ, DateObject[List[1,3,7],"Day","Gregorian",-5.]
trả về ngày viết tắt , {1,3,7}
.
t/@p[#3,2]}
hoặc ToString/@Padleft[#3,2]
đệm phần tử thứ ba, cụ thể là 7 chữ "trong ngày thứ 7 của tháng" như "07"
. Phần đệm tương tự được cung cấp cho ký hiệu một chữ số cho tháng 3, cụ thể, 3
được trả về là "03"
.
p[#, If[Length@# < 5, 4, 5]]
đệm năm với số không để đạt đến độ dài của chuỗi 4 hoặc 5 chữ số. Trong trường hợp này, tháng một, cụ thể 1
, được trả về là `" 00001 "'.
"" <>...
nối các chuỗi. Trong trường hợp này, nó trở lại "000010307"
.
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
trả về những trường hợp đó, trong số 1920 ngày, đó là palindromes và primes.
02-29
chỉ tồn tại trong những năm chia hết cho 400 hoặc (chia hết cho 4 và không chia hết cho 100).