Bahasa Wolfram (Mathematica) 187 byte
Mungkin ada beberapa pengurangan ukuran yang bisa ditemukan. Penjelasan untuk mengikuti ...
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]&
Uji kasus
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"} *)
Penjelasan kode
DayRange[d@#,d@#2]
mengembalikan semua tanggal antara {10011, 10, 1}
dan{10017, 1, 1}
. Dalam hal ini, ia mengembalikan sekitar 5 tahun, 4 bulan tanggal (tepatnya 1920 tanggal). Tahun kabisat diperhitungkan.
Tanggal dikembalikan dalam format standar Wolfram. Misalnya, tanggal pertama akan muncul sebagai DateObject[List[1,1,1],"Day","Gregorian",-5.
] `
#[[1]] & /@
akan menghapus bagian tanggal, di setiap tanggal, yang menjadi perhatian kami. Dalam contoh, DateObject[List[1,3,7],"Day","Gregorian",-5.]
kembalikan tanggal yang disingkat {1,3,7}
,.
t/@p[#3,2]}
atau ToString/@Padleft[#3,2]
bantalan elemen ketiga, yaitu, 7 berdiri "untuk hari ke 7 bulan itu" sebagai "07"
. Padding serupa disediakan untuk simbol satu digit untuk bulan Maret, yaitu, 3
dikembalikan sebagai "03"
.
p[#, If[Length@# < 5, 4, 5]]
mengisi tahun dengan nol untuk mencapai panjang string 4 atau 5 digit. Dalam hal ini, Januari, yaitu 1
, dikembalikan sebagai `" 00001 "'.
"" <>...
bergabung dengan string. Dalam hal ini, ia kembali "000010307"
.
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x]
mengembalikan kasus-kasus itu, di antara tahun 1920, yang merupakan palindrom dan bilangan prima.
02-29
hanya ada selama bertahun-tahun yang dapat dibagi 400 atau (habis dibagi 4 dan tidak habis dibagi 100).