श्रेणी के प्रमुख अंकों के साथ पहले और अंतिम अभाज्य संख्या


12

चुनौती

किसी दिए गए धनात्मक पूर्णांक श्रेणी के लिए, पहले और अंतिम अभाज्य संख्या को पूरी तरह से अभाज्य संख्या अंकों से बना, असाधारण रूप से 0 सहित ( अंकों के लिए , 0-2 की श्रेणी 2-2 का उत्पादन करना चाहिए)। रेंज समावेशी है। यदि कोई संख्या नहीं मिली है, तो अपेक्षित आउटपुट 0. है यदि केवल एक ऐसी संख्या है, तो अपेक्षित आउटपुट दो बार है।

उदाहरण

  • 1-100 की सीमा के लिए, पहली अभाज्य संख्या 2 है और अंतिम 73 (7 और 3 अभाज्य संख्याएँ) हैं।
  • 70-80 की सीमा के लिए, पहली अभाज्य संख्या 73 है और अंतिम भी 73 है (चूँकि दी गई श्रेणी में केवल एक सही संख्या है, हम इसे दो बार वापस करते हैं)।
  • 190-200 की सीमा के लिए, कोई सही उत्तर नहीं है, इसलिए आप 0 पर वापस लौटते हैं।
  • 2000-2100 की सीमा के लिए, पहली अभाज्य संख्या 2003 है और अंतिम 2053 है (हम अंक 0 को छोड़ देते हैं, लेकिन अन्य सभी अंक प्रधान हैं)

यह , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है!

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

इनपुट

  • आप दो पूर्णांकों को इनपुट के रूप में स्वीकार करने के लिए स्वतंत्र हैं, हालांकि आप फिट, स्टैक, फ़ंक्शन तर्क (ओं), सीएलआई तर्क, स्टडिन देख सकते हैं।
  • आप चाहिए केवल दो पूर्णांकों प्राप्त करते हैं।

उत्पादन

  • आपको या तो परिणाम वापस करना होगा (एक ट्यूपल, एक सरणी, यदि आपकी भाषा इसका समर्थन करती है तो बहु-वापसी), इसे स्टैक पर छोड़ दें, या इसे प्रिंट करें (इस मामले में, उन्हें किसी तरह अलग होना चाहिए)।
  • आउटपुट का क्रम अप्रासंगिक है।
  • आपको कोष्ठक और अनुगामी अग्रणी और अनुगामी अनुमति दी जाती है।
  • आपको दो नंबर वापस करने होंगे, यदि कोई उत्तर है, भले ही वे समान हों।
  • यदि कोई उत्तर नहीं है तो आपको 0 वापस करना होगा।

सिर्फ यह सुनिश्चित करने के लिए कि अगर मैं उत्तर देने पर पूर्णांकों की सूची लौटा रहा हूं, तो मैं केवल 0 युक्त कोई सूची वापस कर सकता हूं जब कोई उत्तर न हो? मुझे 0इसके बजाय वापस जाने की आवश्यकता नहीं है [0]?
Οआयुष

जवाबों:



5

पर्ल 6, 105 94 90 86 बाइट्स

{my @b=grep {is-prime all($_,|.comb>>.Int Xor 2)},$^a..$^b;say @b??"@b[0] @b[*-1]"!!0}

4

जावास्क्रिप्ट (ईएस 6), 83 बाइट्स

श्रेणी [अब] को सिंटेक्स में करीने में ले जाता है (a)(b)। या तो 2-तत्व सरणी देता है या 0 देता है

n=>g=(m,a=0)=>n>m?a:g(m-1,(P=d=>m%--d?P(d):d>1|/[14689]/.test(m))(m)?a:[m,a[1]||m])

परीक्षण के मामलों



3

जेली , 14 बाइट्स

æRµDo2ÆPẠµÐf.ị

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

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

æRịDo2ÆPẠµÐf. Full ~ पूर्ण कार्यक्रम।

æR ~ समावेशी प्रमुख रेंज।
  µ conditionf ~ केवल उन लोगों को रखें जो एक शर्त को पूरा करते हैं।
   Do2 DoPÆ ~ फ़िल्टर स्थिति:
   D ~ वर्तमान संख्या का दशमलव अंक।
    o2 ~ तार्किक या 2 (मानचित्र 0 से 2 और स्वयं के लिए कोई अन्य अंक)।
      ÆP ~ प्राइम (तत्व-वार) है?
        Ạ ~ जांचें कि क्या सभी अंक स्थिति को संतुष्ट करते हैं।
            । ~ मॉड्यूलर इंडेक्स 0.5 पर तत्व प्राप्त करें। कुछ विवरण:
                 ~ जेली 1-अनुक्रमित है, इसलिए 1 हमें पहला तत्व देता है, जबकि 0
                   हमें अंतिम तत्व देता है।
                 ~ यदि दिए गए नंबर N की छत और फर्श मेल नहीं खाते, 
                   तब जेली इंडेक्स फ्लोर (एन) और सीइल (एन) पर आइटम लौटाता है ।
                 ~ यदि सूची खाली है, तो यह 0 देता है, इसलिए यह बहुत सुविधाजनक है।

यदि पूरी सीमा लेने की अनुमति दी जाएगी (हालांकि मुझे लगता है कि यह नहीं होना चाहिए), तो 12 बाइट्स:

Do2,ÆPȦµÐf.ị

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


13 बाइट्स हालांकि यह सुपर समान नहीं है। क्या मुझे इसे स्वयं पोस्ट करना चाहिए? आप चाहें तो इसे ले सकते हैं लेकिन मुझे बताएं कि क्या आप अपना समाधान रखने जा रहे हैं।
डायलाॅन डेन्स

ओपी कहते हैं For a given positive integers range। मैं स्पष्ट करने के लिए
कहूँगा

@dylnan ने ध्यान दिया कि आपका संस्करण फिर भी अमान्य है ( 0यह चुनौती से अपवाद है, क्योंकि इसे किसी कारण से प्रमुख अंक के रूप में माना जाना चाहिए)। वैसे भी, मैंने एक छोटा और वैध संस्करण पोस्ट किया
श्री एक्सकोडर

ओह, मुझे लगा कि 0 प्रधान नियम बदल दिया गया है
dylnan

3

ब्रेकीलॉग , 16 बाइट्स

⟦₂{ṗṗᵐ}ˢ⟨⌋≡⌉⟩|∧0

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

पूरी तरह से गैर-सनसनीखेज "वापसी 0 अगर कोई प्राइम नहीं है" हमें |∧0बिना किसी कारण के 3 बाइट्स ( ) खो देता है ( false.अगर हम उन्हें नहीं जोड़ते हैं तो यह वापस आ जाएगा )

व्याख्या

⟦₂                Range from the smallest element of the input to the biggest
  {   }ˢ          Select on that range:
   ṗ                Numbers that are primes
    ṗᵐ              And whose digits are primes
        ⟨   ⟩     Fork on this new list:
         ⌋          Minimum
           ⌉        maximum
          ≡         Do nothing and return [Minimum, Maximum]
             |∧0  If all of this fails (i.e. the list after selection is empty), return 0

अमान्य है क्योंकि यह अंक 0 को प्राइम के रूप में नहीं संभालता है (जैसा कि चुनौती में निर्दिष्ट है)। इस प्रकार, यह विफल रहता है[2000, 2100]
श्री एक्सकोडर

3

पायथ , 24 बाइट्स

मेरे प्रारंभिक दृष्टिकोण का उपयोग कम हो जाता है।

.x,eKfP#I_M-+TjT;0}EQhKZ

यहाँ यह कोशिश करो!

(मैं सिर्फ 23 को अपडेट कर रहा था लेकिन स्टीवन ने मुझे इसके लिए हराया )

?KfP#I_M-+TjT;0}FQhM_BK0

यहाँ यह कोशिश करो!

स्वाभाविक रूप से, hM_BKद्वारा प्रतिस्थापित किया जा सकता है ,hKeK

25 बाइट्स

.x,eKf.AmP_|d2+TjT;}EQhKZ

यहाँ यह कोशिश करो!

26 बाइट्स

|>2.<f.AmP_|d2+TjT;*2}EQ1Z

यहाँ यह कोशिश करो!

|>2.<fP#I_M|R2+TjT;*2}EQ1Z

यहाँ यह कोशिश करो!


वे कैसे काम करते हैं

.x,eKfP#I_M-+TjT;0}EQhKZ ~ Full program. Q, E = first, second inputs

.x                     Z ~ Try-catch block. If the code errors, output 0.
     f            }EQ    ~ Filter the range [E ... Q] for (uses a variable T):
            +TjT;          ~ Append T to the list of its digits.
           -     0         ~ Remove the zeros.
         _M                ~ Multiply each by -1 (for primality testing).
        I                  ~ Check if the result is invariant over...
      P#                   ~ Removing non-prime items.
    K                    ~ Assigned the filtered range to a variable K.
  ,e                     ~ Pair the last element of K with...
                     hK  ~ Its first element.

|>2.<f.AmP_|d2+TjT;*2}EQ1Z ~ Full program.

                   *2}EQ   ~ Inclusive range, repeated twice..
     f                     ~ Filter, using T as the current number.
                jT;        ~ Base-10 digits of T.
              +T           ~ Concatenated with T.
        mP_|d2             ~ Prime check after performing OR 2 (makes 0 be treated as prime)
      .A                   ~ Do all satisfy this condition?
   .<                   1  ~ Rotate by one place cyclically to the left.
 >2                        ~ Last two elements (ignored if there aren't enough)
|                        Z ~ Logical or with 0.


यह [70, 80] परीक्षण मामले में [73] के दो उदाहरणों को वापस नहीं करता है।
स्टीवन एच।

1 से वापस आ गया, अब 25 पर।
स्टीवन एच।

@StevenH। आप 1 से वापस आ गए, अब 24 पर।
श्री Xcoder

प्रतियोगिता तीव्र हो रही है ... 23 पर!
स्टीवन एच।

2

गणितज्ञ 85 बाइट्स

मुझे पता है कि पहले से ही एक समान उत्तर है, लेकिन यहां दृष्टिकोण काफी अलग है।

MinMax@Cases[Range@##,x_/;PrimeQ@x&&DisjointQ@@IntegerDigits/@{x,14689}]/.{_,∞}->0&

यह 83 वर्णों का उत्तर पेस्ट और मैथेमेटिका में चलेगा। TIO साइट T की व्याख्या करना नहीं जानती है।


2

जेली , 14 बाइट्स

Do2ÆPẠ
æRÇÐf.ị

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

æRÇÐf.ị            Main link
æR                 Prime range
   Ðf              Filter the range with...
  Ç                The helper link
      ị            At index (decimal, returns [xs[floor], xs[ceil]], otherwise 0)
     .             0.5

Do2ÆPẠ             Helper link
D                  For each decimal
 o2                Replace 0s with 2s, an actual prime prime (could be 3, 5, or 7).
   ÆP              Filter primes (1 if true, 0 if false)
     Ạ             Check if all are true

बग को ठीक करने में मदद के लिए आउटगोल्फ के लिए धन्यवाद । ट्रिक के लिए मिस्टर एक्सकोडर का धन्यवाद .ị


इसे ठीक ṙ-ḣ2करने के लिए काम करेंगे Ḣ,Ṫ(थोड़ा और संशोधित करना पड़ सकता है)?
जकार्इ

@ Zacharý जो गलत क्रम में आउटपुट देता है, हालाँकि। और यह काम करने के लिए प्रतीत नहीं होता है: \
Ven

@ Mr.Xcoder जेली रूम ने मुझे उसी समाधान के लिए प्रेरित किया। धन्यवाद!
शुक्र

.ịसाथ ही (मिस्टर एक्सकोडर से चुराए गए) काम कर सकते हैं
ज़ाचारी

आप सही हे! यह अच्छा है।
शुक्र



1

पर्ल 6 ,  68 66 65 61  58 बाइट्स

{($_=($^a..$^b).grep({.is-prime&&/^<[02357]>+$/})[0,*-1])[1]??$_!!0}

कोशिश करो

{($_=($^a..$^b).grep({.is-prime&&!/<[14689]>/})[0,*-1])[1]??$_!!0}

कोशिश करो

{($_=($^a..$^b).grep({.is-prime*!/<[14689]>/})[0,*-1])[1]??$_!!0}

कोशिश करो

{($_=($^a..$^b).grep({.is-prime*!/<[14689]>/}))??.[0,*-1]!!0}

कोशिश करो

{($_=grep {.is-prime*!/<[14689]>/},$^a..$^b)??.[0,*-1]!!0}

कोशिश करो

विस्तारित:

{  # bare block lambda with two placeholder parameters 「$a」 and 「$b」

  (
    $_ =  # store the list in 「$_」 for later use

      grep {
          .is-prime

        *              # True * True == 1 (all others equal 0)

          !/<[14689]>/ # doesn't contain a non-prime other than 0
      },

      $^a .. $^b       # inclusive Range

  )            # is the list Truish (not empty)
  ?? .[0,*-1]  # if so output the first and last values (from 「$_」)
  !! 0         # otherwise return 0
}


1

जावा 8, 165 164 बाइट्स

(a,b)->{for(;a<=b&!p(a);a++);for(;b>a&!p(b);b--);return a>b?"0":a+" "+b;}boolean p(int n){int N=n,i=2;for(;i<N;N=N%i++<1?0:N);return(n+"").matches("[02357]+")&N>1;}

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

(a,b)->{            // Method with two integer parameters and String return-type
                    //  (Input `a` is the lowest input, input `b` is the highest input)
  for(;a<=b         //  Increase `a` as long as it's smaller than or equal to `b`,
       &!p(a);a++); //   and it's not a prime, and not all of its digits are prime-digits
  for(;b>a          //  Decrease `b` as long as it's larger than `a`,
       &!p(b);b--); //   and it's not a prime, and not all of its digits are prime-digits
  return a>b?       //  If `a` is now larger than `b`:
    "0"             //   Return 0, because nothing is found
   :                //  Else:
    a+" "+b;}       //   Return the resulting `a` and `b`

boolean p(int n){int N=n,i=2;for(;i<N;N=N%i++<1?0:N);return(n+"").matches("[02357]+")&N>1;}
                    // Separate method that returns whether the input integer is a prime,
                    //  and all of its digits are also primes (or 0)

1

क्लीन , 142 131 125 बाइट्स

import StdEnv
@a b#l=[n\\n<-[a..b]|and[gcd p n<2&&or[c==k\\k<-:"02357"]\\p<-[1..n-1],c<-:toString n]]
|l>[]=[hd l,last l]=[0]

Ungolfed:

import StdEnv
fn start finish
    # primes
        = [ n
            \\
            n <- [start..finish]
            | and [ gcd p n == 1 && isMember c ['0','2','3','5','7'] 
                \\
                p <- [1..n-1],
                c <-: toString n
            ]
        ]
    | isEmpty primes
        = [0]
    = [hd primes, last primes]

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


1

पायथ, 28 25 23 बाइट्स

.xhM_BfP#I_M #+TjT;}FQ0

परीक्षण सूट। अंतिम परीक्षण मामले के लिए रिटर्न [2003,2053], चूंकि 2053 प्रमुख है।


हाहा, अमान्य। [0, 0]इसके बजाय लौटाता है0
श्री एक्सकोडर

आह, गोली मारो। मैं ठीक कर दूँगा।
स्टीवन एच।

@ Mr.Xcoder फिक्स्ड!
स्टीवन एच।

भगवान लानत है मैं सिर्फ 23 के
श्री एक्सकोडर

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