0000-01-01 और 99999-12-31 के बीच सभी पैलिंड्रोमिक प्रमुख तिथियों की सूची बनाएं


11

आपको पता है कि एक पैलेंड्रोम , एक प्राइम और एक तारीख क्या है।

आपका कार्य सभी हजारों विशेषताओं को पूरा करने वाले 100 हजारों वर्षों में सभी तिथियों को सूचीबद्ध करना है।

कुछ भी नहीं लेकिन संख्याओं के अलावा, निम्न स्वरूपों का उपयोग करें: YYYYMMDD और YYYYYMMDD

0000-01-01 और 9999-12-31 के बीच की तिथियों को 8 अंकों की palindromes तिथियों के रूप में मुद्रित किया जाना चाहिए (यदि कोई है?) और 10000-01-01 और 99999-12-31 के बीच की तारीखों को 9 अंकों के palindromes के रूप में मुद्रित किया जाना चाहिए ।

कालानुक्रमिक क्रम में तिथियों को सूचीबद्ध करना अनिवार्य नहीं है।

मान्य आउटपुट का उदाहरण भाग।

पहले तीन 9 अंक के प्रमुख पैलिंड्रोमिक दिनांक:

...
100111001
100131001
100161001
...

नियम

मानक खामियां लागू होती हैं।


नियम: 02-29केवल उन वर्षों के लिए मौजूद है जो 400 से विभाज्य हैं (4 से विभाज्य हैं और 100 से विभाज्य नहीं हैं)।
user202729

@ user202729 हाँ, मुझे ऐसा लगता है, उदाहरण के लिए मुझे नहीं लगता कि 2017-02-29, 2018-02-29 और 1900-02-29 को "दिनांक" माना जा सकता है।
बाहर निकलना

4
कोई 8-अंकीय पैलिंड्रोमिक तारीखें नहीं हैं जो कि प्राइम भी हैं। यहां एक पास्टबिन सूची है जिसे हम वापस करने / प्रिंट करने वाले हैं (कुल 197) । क्या यह सही है @ कार्लसन?
केविन क्रूज़सेन

1
क्या हमें 30 फरवरी को अनुमति देनी चाहिए? > timeanddate.com/date/febnight-30.html
jrtapsell

जवाबों:


5

रूबी , 144 141 बाइट्स ( -rprimeध्वज के लिए 134 + 7 )

सहेजे गए 3 बाइट्स benj2240 के लिए धन्यवाद !

('01'..'12').map{|m|('01'..'31').map{|d|(?0..?9).map{|k|q=m+d
y=q.reverse+k
r=y+q
Time.new(y,m,d).day==d.to_i&&r.to_i.prime?&&(p r)}}}

इसे ऑनलाइन आज़माएं!

एल्गोरिथ्म:

  • "0101" से "1231" तक सभी संभव एमएमडीडी संयोजन उत्पन्न करें
  • उस तिथि के लिए सभी वर्ष उत्पन्न करें, जो एमएमडीडी स्ट्रिंग को उल्टा करके और बीच में जोड़कर, एक पलिंड्रोम में परिणत होगा, बदले में, (0..9) रेंज में सभी चार्ट
  • जाँच करता है, तो है कि एक बनाने के द्वारा एक मान्य दिनांक है Timeदिया साथ उदाहरण y, m, dमान। यदि परिणामी समय वस्तु के #dayबराबर मूल्य है d, तो वह वैध तिथि थी। अन्यथा, यह तारीख (उदाहरण के लिए, Time.new 2018,2,30रिटर्न 2018-03-02) को स्थानांतरित कर देगा ।
  • जाँच करें कि क्या वैध पलिंड्रोम तिथि भी एक प्रमुख है और यदि यह है तो इसे प्रदर्शित करें।

आंतरिक लूप शुरू में एक फ़ंक्शन था जिसे (?0..?9)रेंज में प्रत्येक तत्व के लिए बुलाया गया था , साथ ही खाली स्ट्रिंग के लिए भी।

चूंकि रिक्त स्ट्रिंग ने कोई परिणाम नहीं दिया (कोई मान्य 8 अंकों के प्रमुख palindromes नहीं हैं), मैंने इसे हटाने और इस संस्करण के लिए रिफ्लेक्टर का फैसला किया।


मुझे लगता है कि आप tचर को हटाकर कुछ बाइट्स बचा सकते हैं : TIO
benj2240

@ benj2240 यह सही है! धन्यवाद!
क्रिस्टियन लुपस्कू

4

अजगर 2 , 116 107 128 122 119 बाइट्स

def g(n=9**8):
 while n<1e9:
  n+=2;m=n/100%100
  if 0<m<13and n%100<31+(m+m/8)%2and`n`[::-1]==`n`and 2**n%n==2:print n

चौथी पंक्ति का दूसरा भाग mxdsp के उत्तर से दूसरे गोल्फ प्रश्न से प्रेरित है ।

व्याख्या

फ़ंक्शन g()केवल nडिफ़ॉल्ट मान का उपयोग करके चर को प्रारंभ करने के लिए एक तर्क लेता है । प्रारंभिक मूल्य एक विषम संख्या है जो यथासंभव कम है और जितना संभव हो उतना बड़ा है जबकि अभी भी पहले वैध उत्तर 100111001 से कम है।

nतिथि सीमा के अंत तक पहुंचने तक लूप १० n2 mसे वृद्धि दिनांक का महीना है n

यदि nएक वैध तिथि, पैलिंड्रोम और प्राइम है, तो इसे प्रिंट करें:

  • दिनांक:
    • 0 < m < 13चेक जो mएक वैध महीना है।
    • n % 100 < 31 + (m+m/8)%2जाँचता है कि nमहीने का दिन वैध है। 31 दिनों के साथ सभी महीनों के लिए (m+m/8)%2जोड़ता है 1। इसका श्रेय अरमानक्स के जवाब को जाता है । 29-30 फरवरी के लिए कोई प्राइम नहीं हैं।
  • विलोमपद: `n`[::-1] == `n`। बैकटिक्स कड़े होते हैं n[::-1]स्ट्रिंग को उलट देता है।
  • प्राइम: 2**n % n == 2एक फर्मेट प्राइमलिटी टेस्ट है । वह परीक्षा केवल संभाव्य है। मैच नहीं होने वाले गैर-प्राइम भी हैं। लेकिन उन संख्याओं की श्रेणी में नहीं, जिन्हें हम देख रहे हैं।

फरमेट की प्राणिकता परीक्षण का उपयोग करके अच्छा लगा!
8

3

एपीएल (डायलॉग यूनिकोड) , 155 बाइट्स

CY'dfns'
n←⍕x
m←(⍎2↑¯4n)
d←(⍎¯2n)
:If n≡⌽n
:AndIf 1 pco x
:AndIf m<13
:AndIf d<32
:If m d2 29
:AndIf (400|⍎((≢n)-4)↑n)=0
⎕←x
f x+72
:End
⎕←x
:End
f x+1

इसे ऑनलाइन आज़माएं!

यह एक Tradfn (है पारं itional unctio n ) है कि एक तर्क लेता arg = yyyymmddया arg = yyyyymmdd। उपयोग है f arg

जब तर्क शुरू होता है तो यह कुछ भी आउटपुट नहीं करेगा 10000101क्योंकि यह 60 सेकंड में एक प्रमुख पैलिंड्रोम तारीख नहीं पाता है।

यहां एक कम गोल्फ वाला तरीका है जो ओपी के उदाहरण आउटपुट का उत्पादन करेगा

100111001
100131001
100161001

( इसे ऑनलाइन आज़माएं! )

ध्यान दें कि दोनों कोड अगली तिथि के लिए पुनरावर्ती रूप से फ़ंक्शन को कॉल करने से ठीक पहले तक समान हैं। जबकि गॉल्फर्ड संस्करण इसे कहते हैं f arg+1, कम गॉल्फर्ड कोड दिन- 3101- दिन और महीने से महीने 12तक कूदता है 01, जो इसे काफी तेज करता है।

यह काम किस प्रकार करता है:

CY'dfns'                    Copy (⎕CY) all dfns to enable the use of pco.
n←⍕x                         Assign (←) the input to the variable n.
m←(⍎2↑¯4n)                  Take (↑) the last 4 4) elements of n, then take the first 2 elements of that and assign to m. 
d←(⍎¯2n)                    Take the last 2 2) elements of n, and assign to d.
:If n≡⌽n                     If n matches (≡) its reverse (⌽) (is a palindrome)
:AndIf 1 pco x               And a prime (1 pco)
:AndIf m<13                  And month < 13
:AndIf d<32                  And day < 32
:If m d2 29                 If it is 2/29
:AndIf (400|⍎((≢n)-4)↑n)=0   And the year mod 400 = 0
⎕←x                          Print x
f x+72                       call f with arg year0301
:End
⎕←x                          Print x
:End
f x+1                        call f for the next date.

2

पायथन 3, 163 बाइट्स

r=range
for m in r(1,13):
 for d in r(1,31+(m%2==(m<8))-2*(m==2)):
  t="%02d"*2%(m,d)
  for i in r(10):x=int(t[::-1]+str(i)+t);all(x%i for i in r(2,x))and print(x)

समाधान काफी लंबा है (और संभवत: इसमें सुधार हो सकता है), लेकिन प्राइम / डेट / पैलिंड्रोम चेकिंग के लिए किसी भी अंतर्निहित कार्यों का उपयोग नहीं करता है। स्पष्टता के लिए कुछ हद तक असंयमित संस्करण:

for month in range(1,13):
    for day in range(1,31 + (month%2==(month<8)) - 2*(month==2)):
        t = "%02d%02d" % (month, day)
        for i in range(10):
            x = int(t[::-1] + str(i) + t)
            if all(x%i for i in range(2,x)):print(x)

एक महीने और दिन का चयन करके वैध तिथियां उत्पन्न की जाती हैं। जैसा कि पहले टिप्पणी की गई थी, केवल 9 आकार पर विचार किया जाना चाहिए। यह भी ध्यान दें कि लीप वर्षों पर विचार नहीं किया जाता है। भाग्यशाली संयोग की वजह से इसकी आवश्यकता नहीं है कि लंबाई 9 की पैलिंड्रोम प्राइम्स, जो 0229 पर समाप्त होती हैं, बस मौजूद नहीं होती हैं (1712 की 30 फरवरी जैसी अन्य विसंगतियों को उसी कारण से खारिज किया जा सकता है)।

अगले मध्य अंक को स्वतंत्र रूप से चुना जाता है, और एक प्रमुख परीक्षण किया जाता है। प्राइम टेस्ट के कारण जितना संभव हो उतना कम होना था, यह बहुत भोला है और इस तरह से बहुत धीमा है। बाहरी लाइब्रेरी का उपयोग करने से यह हल हो सकता है (और कुछ बाइट्स बचा सकता है), लेकिन जैसा कि पहले उल्लेख किया गया था कि मैं किसी का उपयोग नहीं करना चाहता था।


आपको अपना कोड ठीक उसी तरह बनाना चाहिए जब आप बाइट्स की गणना करते हैं (इंडेंट रिक्ति को ढहाने के द्वारा इस मामले में)। इसके अलावा, यह बहुत अच्छा है कि आपने एक अनगुल्ड संस्करण शामिल किया है, लेकिन आमतौर पर गोल्फ संस्करण को पहले सूचीबद्ध किया जाता है
wnnmaw

@wnnmaw मेरे द्वारा उत्तर में दिए गए संस्करण पर गिने जाने वाले संस्करण के बीच एकमात्र अंतर यह है कि क्या मैं उन जगहों के बजाय टैब का उपयोग करता हूं जो यहां उपयोग किए जाते हैं। जैसा कि मैं जानता हूं कि टैब ऑटो-परिवर्तित हो जाते हैं, इसलिए मुझे इसे ठीक करने का कोई तरीका नहीं दिखता है।
डेफ

@ डीईएफ IIRC पायथन आपको इंडेंटेशन के रूप में भी रिक्त स्थान का उपयोग करने की अनुमति देता है, इस तरह से यह आपके उत्तर में भी समान दिख सकता है। मुझे सही अगर मैं पहले भाग पर गलत हूँ, हालांकि।
तत्व प्रधान

@elementbound यह वास्तव में करता है, सुझाव के लिए धन्यवाद।
डेफ

2

वोल्फ्रामलंगेज (गणितज्ञ) 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 की तारीखों के बीच उन मामलों को लौटाता है, जो पैलिन्ड्रोम और प्रिम्स हैं।


2

जावास्क्रिप्ट , 187 177

मान्यताओं: कोई मिलान 4 अंक साल; फरवरी में 29-30 के बीच कोई मेल नहीं खाता

p=n=>(n<10?'0':'')+n;f=n=>n[3]+n[2]+n[1]+n[0];for(m=13;--m;)for(d=31+(m+(0|m/8))%2;--d;){for(y=10;y--;){z=p(m)+p(d);Y=+(f(z)+y+z);for(i=2;Y%i&&i*i<Y;i++);if(Y%i)console.log(Y)}}

यह इस तरह काम करता है:

p=n=>(n<10?'0':'')+n;       //Prepend a 0 for 1-digit numbers and convert to a string
f=n=>n[3]+n[2]+n[1]+n[0];   //Flip four digits
for(m=13;--m;)              //Month loop, from 12 to 1
 for(d=
       31+(m+(0|m/8))%2     //Calculate the days in the month, allowing  Feb. 29 & 30
                       ;--d;){ //Day loop
  for(y=10;y--;){           //Middle digit loop
   z=p(m)+p(d);             //Prepend zeros to the month and day
   Y=+(f(z)+y+z);           //Flip the digits; append the middle digit,
                            //month, and day; convert back to an integer
   for(i=2;Y%i&&i*i<Y;i++); //Check if it's a prime
    if(Y%i)console.log(Y)}} //If it doesn't divide evenly, it's not prime. Print it!

इतिहास:

  • १ से १ dates dates: २ ९ या ३० जनवरी को आने वाली कोई भी प्रमुख पैलेंड्रोम तिथियां नहीं होती हैं, इसलिए हम २० दिनों के लिए १० फरवरी का नाटक कर सकते हैं और १० पात्रों को बचा सकते हैं।

टिप्पणियाँ:

परीक्षण के माध्यम से, मैंने पाया कि कोई वैध मिलान नहीं हैं जो 4-अंकों के वर्ष हैं या 29 फरवरी या 30 तारीख को आते हैं। दुर्भाग्य से, कोड के लिए, ठीक पाँच (अमान्य) परिणाम हैं जो विभिन्न महीनों के 31 वें दिन आते हैं। उसके पास केवल 31 दिन हैं।


2

जावा 10, 329 327 320 318 312 308 307 264 बाइट्स

v->{for(int y=9999,m,d;++y<1e5;)for(m=0;++m<13;)for(d=0;++d<32;)try{java.time.LocalDate.of(y,m,d);var t=y+"".format("%02d%02d",m,d);long n=new Long(t),x=1;for(;n%++x%n>0;);if(t.contains(new StringBuffer(t).reverse())&n==x)System.out.println(t);}finally{continue;}}

-1 बाइट @ @ स्टाइलिस को धन्यवाद ।

स्पष्टीकरण:

इसे ऑनलाइन आज़माएं (ध्यान दें: प्राइम-चेकिंग पार्ट को एक अधिक कुशल अलग विधि के साथ बदल दिया गया है, हालांकि इसके साथ ही यह 60 सेकंड के बाद भी बाहर है, केवल पहले ~ 115 पैलिंड्रोमिक प्राइम डेट्स को आउटपुट करता है)।
एक स्थानीय रन से सभी 197 आउटपुट के पास्टबिन।

v->{                           // Method without empty unused parameter and no return-type
  for(int y=9999,m,d;++y<1e5;) //  Loop over the years in the range [1000,9999]:
    for(m=0;++m<13;)           //   Inner loop over the months in the range [1,12]:
      for(d=0;++d<32;){        //    Inner loop over the days in the range [1,31]:
        try{java.time.LocalDate.of(y,m,d);
                               //     If it's a valid date:
          var t=y+"".format("%02d%02d",m,d);
                               //      Convert the numbers to a String in format "yyyyyMMdd"
          long n=new Long(t),  //      Convert this String to a long
          x=1;for(;n%++x%n>0;);//      Prime-checking loop
          if(t.contains(new StringBuffer(t).reverse())
                               //      If the string is palindromic
             &n==x)            //      and the long is a prime:
            System.out.println(t);
                               //       Print the string with trailing newline
        }finally{              //     If it isn't a valid date:
          continue;}}}         //      Continue to the next iteration of the inner-most loop

1
if(t.equals(new StringBuffer(t).reverse()+"")-> if(t.contains(new StringBuffer(t).reverse())1 चरित्र को बचाने के लिए (काम करता है क्योंकि हम जानते हैं कि दोनों तारों की लंबाई समान है)। यह बहुत ज्यादा नहीं है :-(
assylias

@assylias स्मार्ट, मुझे यह पसंद है। धन्यवाद! और यद्यपि 1 बाइट ज्यादा नहीं है, फिर भी यह 1 बाइट है। कोडगॉल्फ हमेशा इसे यथासंभव छोटा बनाने के बारे में है, इसलिए हर बाइट मायने रखता है। :)
केविन क्रूज़सेन

1

VBA, 347

Sub PalindromeDate()
Dim DateString As String
For i = 0 To 9999
    For j = 1 To 12
        For k = 1 To 31
        DateString = Format(i, "0000") & Format(j, "00") & Format(k, "00")
        If DateString = StrReverse(DateString) Then
        Debug.Print DateString
        Else
        End If
        Next k
        Next j
        Next i

End Sub

PPCG में आपका स्वागत है! मैं VBA नहीं जानता, लेकिन ऐसा लगता है कि आप कुछ व्हाट्सएप बंद कर सकते हैं।
फंतासी

मुझे वास्तव में VBA का भी पता नहीं है, लेकिन मुझे लगता DateStringहै कि यह एक मनमाना चर नाम है, इसलिए आपको इसे एक ही पात्र में कम करना चाहिए, है ना?
मार्टिन एंडर

3
और मुझे लगता है कि आप "पैलिंड्रोमिक प्राइम डेट्स" के प्रमुख भाग से चूक गए ।
व्यापारी


5-अंकीय वर्ष भी गायब हैं, और एल्स आवश्यक नहीं है।
वीजुन झोउ


0

जावास्क्रिप्ट , 234 229 बाइट्स

थोड़ा सा भारी, लेकिन इसे पोस्ट करने के लिए जेएस बॉल को रोल किया गया। किसी भी सुझाव का स्वागत है!

f=n=>100+10*n+n/10|0
p=n=>{for(i=2;i<n;n=n%i++<1?0:n);return n>1}
q=n=>(''+(100+n)).slice(-2)
r=_=>{for(m=13;--m;)for(d=32;--d;)for(x=10;--x+1;){s=q(f(d))+q(f(m))+x+q(m)+q(d);if(p(s|0)&&d<(m==2?29:31+(m+m/8|0)%2))console.log(s)}}

Ungolfed:

// Flip a one- or two-digit number
f=n=>100+10*n+n/10|0

// Primality test
// For initial testing, you can replace this line with:
//      p=require('primality')
// This uses the primality npm module and is way faster
p=n=>{for(i=2;i<n;n=n%i++<1?0:n);return n>1}

// Convert number to string, pad with zeroes if necessary
q=n=>(''+(100+n)).slice(-2)

r=_=>{
    // Loop months
    for(m=13;--m;)
        // Loop days
        for(d=32;--d;)
            // Loop middle digit
            for(x=10;--x+1;) {
                // Construct 'date'
                s = 
                    // Start with day and month, each flipped
                    q(f(d))+q(f(m)) + 
                    // Add middle digit ( will be casted to string since the previous expression is also a string)
                    x + 
                    // Add month and date as they are
                    q(m)+q(d);

                if(
                    // Check for primality
                    p(s|0) && 
                    // Check if it's a valid date by validating day ( month and year will always be valid)
                    d<(
                        // For February, we always assume 28 days ( check for 29 because we use less than)
                        m==2?29 : 
                        // For other months, it alternates between 31 and 30
                        // EXCEPT July and August both have 31 days, then continues alternating
                        31+(m+m/8|0)%2))
                    console.log(s)
            }
}

यह काम किस प्रकार करता है:

मैजिक फ्लिपिंग मैजिक ज्यादातर प्रयोग करने पर आधारित है।
मुझे लगा कि फ़्लिप संस्करण प्राप्त करने के लिए किस संख्या से घटाना है। मैंने केवल अंतिम दो अंकों की परवाह की है।
इसलिए, यदि हम लेते हैं n, kतो ऐसा पाते हैं n+k=flip(n)। के लिए 10<n<20 k101 पर शुरू कर दिया और 9. की वृद्धि के साथ वृद्धि हुई है हालांकि, के लिए n<10, उसे 100 मैं मान लिया गया था k10 के हर कूद के लिए वृद्धि हुई है, और नगण्य का एक सा होने के बाद मैं समझ यह सही था।
तो, k=100+9*n+n//10जहां // का मतलब पूर्णांक विभाजन है।

इस प्रकार, हम प्राप्त करते हैं n+k = n+(100+9*n+n//10) = 100+10*n+n//10 = flipped(n)

मैं साबित नहीं कर सकता और न ही यह दावा कर सकता हूं कि यह किसी भी संख्या के लिए काम करता है, लेकिन इसने यहां इस्तेमाल किए गए नंबरों के लिए सही परिणाम तैयार किए हैं।

प्राइमलिटी टेस्ट के लिए, केविन क्रूज़सेन के जवाब का श्रेय । मेरा संस्करण थोड़ा छोटा था, लेकिन मैं इसे सही नहीं कर पाया:

p=n=>{for(i=n;--i-1;)if(!(n%i))return 1;}

मैं महीनों, दिनों और एक मध्य अंक पर लूपिंग करके पैलिंड्रोम टेस्ट में फिसल गया, इसलिए मैं स्ट्रिंग्स का निर्माण कर सकता हूं dDmMxMmDd, जहां Dदिन का पहला अंक dहै, दूसरा है, आदि।

इतिहास

क्ष के सशर्त भाग से छुटकारा पाकर 5 बाइट्स बचाए

q=n=>n<10?'0'+n:(''+n).slice(-2) // from
q=n=>(''+(100+n)).slice(-2)      // to

बाइट गिनती के साथ खिलवाड़ के लिए क्षमा करें। गलती से कुछ सॉफ्ट-टैब में फिसल गया। अब सही होना चाहिए।
तत्वबोध

आप कभी भी केवल fएक पैरामीटर के रूप में परिणाम का उपयोग कर रहे हैं q, इसलिए मध्य व्यक्ति को काटें और लिखें f=n=>''+n%10+(n/10|0), और q का परिणाम हमेशा एक स्ट्रिंग के रूप में उपयोग किया जाता है, इसलिए आप लिख सकते हैं q=n=>n<10?'0'+n:n
नील

0

एपीएल एनएआरएस 626 बाइट्स, 313 चार्ट

f;y;m;d;i;k;v;x;t
t←{60⊥3↑3↓⎕TS}⋄t0←50+t
x←2 12⍴v,v←31 28 31 30 31 30 31 31 30 31 30 31
x[2;2]←29⋄m←d←1⋄y←10000
X:  i←{(0=4∣⍵)∧0≠100∣⍵:1⋄0=400∣⍵:1⋄0}y
A:  →0×⍳y≥1e5
    →0×⍳t≥t0
    k←d+100×m+y×100
    →B×⍳∼k=⍎⌽⍕k⋄→B×⍳∼0πk⋄⎕←k
B:  d+←1
    →A×⍳d≤x[1+i;m]
    d←1⋄→C×⍳∼m=12⋄m←1⋄y+←1⋄→X
C:  m+←1⋄→A

यह प्रिंट 50 सेकंड में क्या मिलता है, खुद को रोक लें (क्योंकि अन्यथा मैं कॉपी पेस्ट टेस्ट के लिए प्रोग्राम को रोक नहीं सकता, क्योंकि मुझे नहीं पता कि इंटरप्रिटर की खिड़कियों को बंद किए बिना प्रोग्राम को कैसे रोकना है): टेस्ट

  f
100111001
100131001
100161001
101030101
101060101
101141101
101171101
102040201
102070201
103000301
103060301
104000401
104030401
104040401

0

जूलिया 0.6 , 109 बाइट्स

लिंक दो भिन्नताओं के साथ एक लंबे संस्करण में जाता है:

  1. प्राइम पैकेज TIO पर उपलब्ध नहीं है, क्योंकि हाथ से लिखित समारोह के साथ अपराधों के लिए जाँच करता है।
  2. समय समाप्त नहीं करने के लिए एक अलग तिथि सीमा से अधिक Iterates।
[s for s in Dates.format(Date(0,1,1):Date(100000,1,1),"YYYYmmdd") if Primes.isprime(parse(s))&&s==reverse(s)]

इसे ऑनलाइन आज़माएं!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.