এটি কি পাস্কাল প্রাইম?


18

এটি সর্বজনবিদিত যে বিজল প্রাইমগুলি পাস্কালের ত্রিভুজটিতে ঠিক দু'বার প্রদর্শিত হবে। তবে, পাসকালের ত্রিভুজের ঠিক দু'বার প্রদর্শিত সমস্ত সংখ্যা প্রধান নয়। আমরা এই নম্বরগুলিকে পাস্কাল প্রাইম বলব।

পাস্কাল প্রাইমগুলি সম্মিলিত সংখ্যা যা পাস্কালের ত্রিভুজটিতে ঠিক দু'বার প্রদর্শিত হয়। প্রথম কয়েকটি পাস্কাল প্রাইম হ'ল

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

আপনার চ্যালেঞ্জটি হ'ল ইনপুট এবং আউটপুটকে সত্য বা মিথ্যা হিসাবে ধনাত্মক পূর্ণসংখ্যা এন নেওয়া , যদি এন পাস্কাল প্রাইম হয় বা না হয় তার উপর নির্ভর করে । এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম প্রোগ্রামটি জয়ী!



2
আমরা যদি সত্যই এটি পাস্কাল প্রাইম না হয় এবং এটি মিথ্যা হয় তবে সত্য আউটপুট করতে পারি?
কেয়ার্ড কোইনারিংহিংহিং


@Cairdcoinheringaahing না, এটি অবশ্যই প্রদত্ত প্রয়োজনে থাকতে হবে।
সরল সুন্দর আর্ট

আমি অবাক হয়েছি কেউ পাস্কলে কোনও উত্তর পোস্ট করেনি। আমি সময় পেলে (এবং যদি আমি আমার পুরাতন পাস্কল সংকলকটি খুঁজে পেতে পারি)।
মনাসেখ্যাটজ-রিইনস্টেট মনিকা

উত্তর:


10

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 45 বাইট

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

এটি অনলাইন চেষ্টা করুন!

প্রতিটি সংমিশ্রণ এন এন সারি n এর দু'বার প্রদর্শিত হয় এবং পরে প্রদর্শিত হয় না। সুতরাং পাস্কাল প্রাইমসের শর্তটি হ'ল তারা প্রথম এন -1 সারিগুলির মধ্যে উপস্থিত হয় না ।

আমি যতদূর বলতে পারি, এটি প্রথম এন সারিগুলির মধ্যে ঠিক দু'বার প্রদর্শিত হয়েছে এবং এটি !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

এটি অনলাইন চেষ্টা করুন!

এটি একটি নামযুক্ত ফাংশন এফ , যা প্রস্থান কোডের মাধ্যমে আউটপুট দেয় , 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.

এটি মূলত পাস্কালের ত্রিভুজটির প্রথম এন - 1 সারিতে n হয় কিনা তা যাচাই করে এবং যদি এই দুটি শর্তের কোনওটি পূরণ হয় তবে একটি ত্রুটি নিক্ষেপ করে।

ওভিএসকে 1 বাইট সংরক্ষণ করা হয়েছে



@ ওভস: ও তো চালাক! ধন্যবাদ।
মিঃ এক্সকোডার

4

জেলি , 11 10 9 বাইট

ধন্যবাদ:

  • -১ বাইটের জন্য মার্টিন ইন্ডার! (অন্য পদ্ধতির, ব্যবহার (+1) n2(-2) ব্যবহার এড়ানো , সামগ্রিকভাবে -1।
  • বাগ ফিক্সের জন্য জোনাথন অ্যালান
  • ডেনিস আরেকটি -1 বাইট জন্য।
Ḷ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কাজ করা উচিত.
ডেনিস

এফওয়াইআই আমি আমার পদ্ধতির একটি ত্রুটি খুঁজে পেয়েছি এবং এটি মুছে ফেলেছি।
জনাথন অ্যালান

বিটিডব্লিউরও Ḷ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সব উপাদান আছে যা দুইবার (-setup চেয়ে বেশি প্রদর্শিত জন্য 1,) তাই সব আমরা প্রয়োজন একটি ত্রুটিপূর্ণ থাকতে হয় isPrimeফাংশন যা রিটার্ন Trueজন্য 1:

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

4

এপিএল (ডায়ালগ) , 44 34 24 19 বাইট

5 বাইটস সংরক্ষিত @ কউসকেউকে ধন্যবাদ

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

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

আমরা নিশ্চিত যে তন্ন তন্ন করে

- ব্যাপ্তি 0.. n-1,

⍳∘.! - স্ব সাথে কার্তেসিয়ান দ্বিপদী উপর

⊢∊- ধারণ n,

- না

⊢|⍨- nপ্রতিটি আইটেমের মডুলো

2↓⍳- পরিসীমা 2..n-1

~0∊- থাকে না 0(ওরফে অবিভাজ্য)


এটিকে ট্রেনে রূপান্তর করা (∨/1↓1≠⊢∨⍳)∧(~⊢∊⍳∘.!⍳)দুটি বাইট দ্বারা সংক্ষিপ্ত
ক্রিটিক্স লিথোস

@ কউসকাওক হুম আমি খেয়াল করিনি এটি এত সংক্ষিপ্ত হয়ে গেছে যে কোনও ট্রেন ফিট করতে পারে (40 বাইটার হিসাবে শুরু হয়েছিল)। ধন্যবাদ!
উরিল

(0∊⊢|⍨2↓⍳)∧∘~⊢∊⍳∘.!⍳আরও দু'জনের জন্য, আমি প্রাথমিক চেকিং অ্যালগরিদম পরিবর্তন করেছি
ক্রিটিক্সী লিথোস

পুনঃটুইট আমি এর আগে প্রারম্ভিকতার প্রকরণটি আগে কখনও দেখিনি
উরিল

পুনরায় সজ্জিত করা ~দেয় (~0∊⊢|⍨2↓⍳)⍱⊢∊⍳∘.!⍳এক কম বাইট জন্য।
ক্রিটসি লিথোস

2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 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%nথোরিটি কাজ করে তবে বাস্তবে ছোট পরিসরের জন্য
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

05 এ বি 1 ই , 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প্রথম এন + 1 সারিতে ঠিক দু'বার ঘটে এবং এটি প্রাইম নয়।
ত্রিভুজটিতে 3 বার ঘটতে পারে এমন কোনও প্রাইম নেই বলে তুলনাটি কাজ করে।





0

পাইথন 2 , 105 104 বাইট

-1 বাইটের জন্য ব্যবহারকারী 202729 ধন্যবাদ

a=q=[1];n=input();r=n<4;p=1
for i in range(2,n):q=a+map(sum,zip(q[1:],q))+a;r+=n in q;p*=n%i
print p+r<1

এটি অনলাইন চেষ্টা করুন!


আশেপাশে প্রথম বন্ধনীর জুটিটি p+rঅপ্রয়োজনীয় বলে মনে হচ্ছে ...
ব্যবহারকারী 202729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.