क्या यह पास्कल प्राइम है?


18

यह सर्वविदित है कि पास्कल के त्रिकोण में लगभग दो बार अजीब तरह के अपराध दिखाई देंगे। हालाँकि, पास्कल के त्रिकोण में दो बार दिखाई देने वाली सभी संख्याएँ प्रमुख नहीं हैं। हम इन नंबरों को पास्कल प्रिम्स कहेंगे।

पास्कल प्राइम कंपोजिट नंबर हैं जो पास्कल के त्रिकोण में दो बार दिखाई देते हैं। पहले कुछ पास्कल प्राइम हैं

4, 8, 9, 12, 14, 16, 18, ...

आपकी चुनौती यह है कि इनपुट और आउटपुट सही या गलत के रूप में एक सकारात्मक पूर्णांक n लें , यह निर्भर करता है कि n पास्कल प्राइम है या नहीं। यह कोड-गोल्फ है, इसलिए सबसे छोटा कार्यक्रम जीत जाता है!



2
अगर यह पास्कल प्राइम नहीं है और अगर यह सही है तो क्या हम सच का उत्पादन कर सकते हैं?
caird coinheringaahing


@cairdcoinheringaahing नहीं, यह दी गई आवश्यकता में होना चाहिए।
बस सुंदर कला

मुझे आश्चर्य है कि पास्कल में किसी ने भी जवाब पोस्ट नहीं किया। अगर मुझे समय मिलेगा (और अगर मैं अपना पुराना पास्कल संकलक पा सकता हूं)।
manassehkatz-Monica

जवाबों:


10

वोल्फ्राम भाषा (गणितज्ञ) , 45 बाइट्स

CompositeQ@#&&Binomial~Array~{#-1,#}~FreeQ~#&

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

प्रत्येक मिश्रित संख्या n पंक्ति n पर दो बार बिल्कुल दिखाई देती है और बाद में दिखाई नहीं दे सकती है। इसलिए पास्कल primes के लिए शर्त यह है कि वे पहली n-1 पंक्तियों के भीतर बिल्कुल भी दिखाई न दें ।

जहाँ तक मैं बता सकता हूँ, यह जाँचने से कम है कि यह पहली n पंक्तियों के भीतर दो बार दिखाई देता है और !PrimeQइसके बजाय उपयोग करने में सक्षम है ।


4

पायथन 2 , 93 बाइट्स

def f(n):l=[1];exec"(n in l)>=any(n%k<1for k in range(2,n))>q;l=map(sum,zip([0]+l,l+[0]));"*n

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

यह एक नामित फ़ंक्शन f है , जो बाहर निकलने के कोड के माध्यम से आउटपुट करता है , 0 पास्कल प्राइम के लिए, 1 अन्यथा।

यह कैसे काम करता है?

def f(n):l=[1];                       # Define a function f (arg. n) and a list l = [1].
exec"..."*n                           # Execute n times.
(n in l)                              # Boolean: "n is in l?" is greater than...
   >=any(n%k<1for k in range(2,n))    # the boolean: "Is n composite?"?
            >q;                       # If the boolean comparison returns a falsy
                                      # result, then continue on without any difference.
                                      # Otherwise, evaluate the other part of the
                                      # inequality, thus performing "is greater than q".
                                      # Since we have no variable "q", this terminates
                                      # with exit code 1, throwing a "NameError".
l=map(sum,zip([0]+l,l+[0]));          # Generate the next row in Pascal's triangle,
                                      # By zipping l prepended with a 0 with l appended
                                      # with a 0 and mapping sum over the result.

यह मूल रूप से जाँचता है कि क्या n n के पहले n में आता है - पास्कल के त्रिकोण की 1 पंक्तियाँ या यदि यह प्रधान है, और इन दोनों में से किसी भी स्थिति के पूरा होने पर एक त्रुटि फेंकता है।

अंडा के लिए 1 बाइट का धन्यवाद बचा



@ नोव्स: ओ यह चतुर है! धन्यवाद।
मिस्टर एक्सकोडर

4

जेली , 11 10 9 बाइट्स

करने के लिए धन्यवाद:

  • -1 बाइट के लिए मार्टिन एंडर! (एक अन्य दृष्टिकोण, उपयोग (+1) का उपयोग करने से बचें n2(-2), इसलिए कुल मिलाकर १।
  • बग फिक्स के लिए जोनाथन एलन
  • एक और बाइट के लिए डेनिस
Ḷc€ḶFċ=ÆP

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

वैकल्पिक दृष्टिकोण , जोनाथन एलन द्वारा । (त्रुटिपूर्ण)

----------- Explanation -----------
Ḷ            Lowered range. [0, 1, ..., n-1]
 c€Ḷ           `c`ombination `€`ach with `Ḷ`owered range [0...n-1]
    F        Flatten.
     ċ       Count the number of occurences of (n) in the list.
       ÆP    Returns 1 if (n) is a prime, 0 otherwise.
      =      Check equality.

अंतिम पंक्ति के लिए स्पष्टीकरण:

  • जैसा कि मार्टिन एंडर ने कहा है, " nपास्कल त्रिकोण में दो बार दिखाई देता है" " nपहली n-1पंक्तियों में प्रकट नहीं होता " के बराबर है ।
  • trueयदि संख्या अभाज्य (नहीं ÆP == 0) है और गिनती cशून्य है तो हम लौटना चाहते हैं । उससे हम वह घटा सकते हैं ÆP == c
    यह साबित किया जा सकता है कि यदि वे समान हैं, तो वे 0 के बराबर हैं, क्योंकि:
    • ÆP एक बूलियन मान लौटाएं, जो केवल 0 या 1 हो सकता है।
    • यदि यह 1 रिटर्न देता है, तो nयह एक प्रमुख है, इसलिए यह पहली n-1पंक्तियों में प्रकट नहीं हो सकता (जो है c == 0)

1एक पास्कल प्राइम नहीं है; यह कहता है।
जोनाथन एलन

Ḷc€ḶFċoÆP¬मुझे लगता है कि काम करेगा।
जोनाथन एलन

ċ=ÆPकार्य करना चाहिए।
डेनिस

FYI करें मैंने अपने दृष्टिकोण में दोष पाया और इसे हटा दिया है।
जोनाथन एलन

BTW Ḷcþ`Fċ=ÆPभी काम करना चाहिए।
श्री एक्सकोडर

4

हास्केल , 86 84 बाइट्स

p=[]:[zipWith(+)(1:x)x++[1]|x<-p]
f n=all((>0).rem n)[2..n-1]==any(elem n)(take n p)

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

व्याख्या

फ़ंक्शन pपुनरावर्ती रूप से एक पतित पास्कल त्रिकोण को परिभाषित करता है:

[]
[1]
[2,1]
[3,3,1]
[4,6,4,1]
[5,10,10,5,1]

जैसा कि हम देख सकते हैं (इस समाधान 1में कुछ विशेष है) प्रत्येक पंक्ति वें पंक्ति nमें दो बार बिल्कुल दो बार दिखाई देती है n+1और बाद की पंक्तियों के सभी तत्व केवल बड़े हो जाते हैं, इस प्रकार हमें केवल यह जांचने की आवश्यकता है कि nक्या कहीं nवें पंक्ति में यह देखने के लिए है कि क्या तत्व अयोग्य है:

any(elem n)(take(n-1)p)

अब हमारे पास Trueउन सभी तत्वों के लिए है जो दो बार (छोड़कर 1) से अधिक दिखाई देते हैं , इसलिए हमें केवल एक दोषपूर्ण isPrimeकार्य करना होगा जो इसके लिए वापस आता Trueहै 1:

all((>0).rem n)[2..n-1]

4

APL (Dyalog) , 44 34 24 19 बाइट्स

5 बाइट्स @Cowsquack की बदौलत बच गए

(~0∊⊢|⍨2↓⍳)⍱⊢∊⍳∘.!⍳

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

कैसे?

हम यह सुनिश्चित करते हैं कि न तो करता है

- सीमा 0.. n-1,

⍳∘.! - कार्टेशियन द्विपद पर स्वयं के साथ

⊢∊- होते हैं n,

- नहीं है

⊢|⍨- के nप्रत्येक आइटम modulo

2↓⍳- सीमा 2।।n-1

~0∊- शामिल नहीं 0(उर्फ गैर-अदृश्य)


इसे एक ट्रेन में परिवर्तित करना (∨/1↓1≠⊢∨⍳)∧(~⊢∊⍳∘.!⍳)दो बाइट्स से कम है
क्रिति लिथोस

@Cowsquack हम्म ने ध्यान नहीं दिया कि यह इतना छोटा है कि एक ट्रेन फिट हो सकती है (40 बटर के रूप में शुरू)। धन्यवाद!
उरईल

(0∊⊢|⍨2↓⍳)∧∘~⊢∊⍳∘.!⍳एक और दो के लिए, मैंने
प्राइमलिटी

@Cowsquack ऊ चतुर। मैंने पहले कभी नहीं देखा है कि उर्मिल भिन्नता
Uriel

उलटफेर करने ~देता है (~0∊⊢|⍨2↓⍳)⍱⊢∊⍳∘.!⍳एक कम बाइट के लिए।
क्रिति लिथोस

2

जावास्क्रिप्ट (Node.js) , 103 101 बाइट्स

n=>(r=x=>[...Array(n).keys(F=n=>n>0?n*F(n-1):1)].every(x))(i=>r(j=>F(i)/F(j)/F(i-j)-n))>r(i=>i<2|n%i)

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


n=>(r=x=>[...Array(n).keys(F=n=>n>0?n*F(n-1):1)].every(x))(i=>r(j=>F(i)/F(j)/F(i-j)-n))>F(n-1)**2%nthreority काम करती है लेकिन वास्तव में छोटी श्रेणी के लिए
l4m2


2

आर , 55 बाइट्स

function(n)sum(!n%%1:n)>2&!n%in%outer(1:n-1,1:n,choose)

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

sum(!n%%1:n)>2समग्र परीक्षण है और outer(1:n-1,1:n,choose)पंक्तियों की गणना करता है0 को n-1तो हम यह सुनिश्चित कर लें, पास्कल त्रिकोण का nवहाँ प्रकट नहीं होता है।


2

05AB1E , 10 बाइट्स

ÝDδcI¢IpÌQ

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

व्याख्या

Ý            # push range [0 ... input]
 D           # duplicate
  δc         # double vectorized command binomial
    I¢       # count occurrences of input
      Ip     # check input for primality
        Ì    # add 2
         Q   # compare for equality

चेक जो पास्कल्स त्रिकोण nकी पहली n + 1 पंक्तियों में दो बार होता है और अभाज्य नहीं है।
तुलना काम करती है क्योंकि त्रिकोण में 3 बार होने वाले कोई भी प्राइम नहीं हैं।





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