প্রাইম কন্টেনমেন্ট নম্বর (গল্ফ সংস্করণ)


21

এটি ক্রম A054261

ম প্রাইম সংবরণ সংখ্যা সর্বনিম্ন নম্বর যার প্রথম রয়েছে , সাবস্ট্রিং যেমন মৌলিক সংখ্যার। উদাহরণস্বরূপ, সংখ্যাটি সর্বনিম্ন সংখ্যা যা সাবস্ট্রিং হিসাবে প্রথম 3 টি প্রাইম ধারণ করে, এটি তৃতীয় মৌলিক সংখ্যার সংখ্যা করে।এনএন235

প্রথম চারটি মূল সংখ্যার সংখ্যা , , এবং হয় তা নির্ধারণ করা তুচ্ছ , তবে এটি আরও আকর্ষণীয় হয়ে ওঠে । যেহেতু পরবর্তী 11, পরবর্তী মূল সংখ্যাটি নয় , তবে এটি এটি সম্পত্তি সহ সবচেয়ে ছোট সংখ্যা হিসাবে সংজ্ঞায়িত হয়েছে।2232352357235711112357

যাইহোক, আসল চ্যালেঞ্জটি আপনি যখন ১১ এর ছাড়িয়ে যাবেন পরবর্তী নম্বরটি । নোট করুন যে এই সংখ্যায়, সাবস্ট্রিংগুলি এবং ওভারল্যাপিং রয়েছে। সংখ্যাটি সংখ্যাটি দিয়ে ওভারল্যাপও হচ্ছে ।1132571113313

এটি প্রমাণ করা সহজ যে এই ক্রমটি ক্রমবর্ধমান, যেহেতু পরের সংখ্যাটির আগে সংখ্যার সমস্ত মানদণ্ড পূরণ করা দরকার এবং আরও একটি স্ট্রিং রয়েছে। যাইহোক, ক্রম কঠোরভাবে বাড়ছে না, যেমন এর জন্য ফলাফল দ্বারা প্রদর্শিত হয় n=10এবং n=11

ইনপুট

একটি একক পূর্ণসংখ্যা n>0(আমি মনে করি আপনি এটি 0-সূচিযুক্ত করেও তৈরি করতে পারেন n>=0)

আউটপুট

হয় nপ্রথম nসংখ্যার কন্টেন্ট সংখ্যার নাম্বার, বা একটি প্রথম তালিকার সংখ্যার তালিকা রয়েছে।

আমি এখন পর্যন্ত যে সংখ্যাগুলি পেয়েছি সেগুলি হ'ল:

 1 =>             2
 2 =>            23
 3 =>           235
 4 =>          2357
 5 =>        112357
 6 =>        113257
 7 =>       1131725
 8 =>     113171925
 9 =>    1131719235
10 =>  113171923295
11 =>  113171923295
12 => 1131719237295

নোট করুন n = 10এবং n = 11একই সংখ্যা, যেহেতু 113171923295 হ'ল সর্বনিম্ন সংখ্যা যা সমস্ত সংখ্যা [2,3,5,7,11,13,17,19,23,29] রয়েছে তবে এটিতেও 31 রয়েছে ।

যেহেতু এটি কোড গল্ফ হিসাবে চিহ্নিত, গল্ফিং পান! ব্রুট ফোর্স সলিউশনগুলি অনুমোদিত, তবে আপনার কোডটিতে তত্ত্বের কোনও ইনপুট জন্য কাজ করতে হবে (যার অর্থ আপনি কেবল প্রথম এন প্রাইমগুলিকে একত্রিত করতে পারবেন না)। শুভ গল্ফিং!

উত্তর:


11

05 এ বি 1 ই , 8 বাইট

∞.ΔIÅpåP

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

ব্যাখ্যা

           # from
∞          # a list of infinite positive integers
 .Δ        # find the first which satisfies the condition:
       P   # all
   IÅp     # of the first <input> prime numbers
      å    # are contained in the number

Pঅপারেটর কি সংখ্যায় প্রাথমিক সংখ্যা পরীক্ষা করার জন্য (সংখ্যাটি প্রাইমের অ্যারেতে রয়েছে কিনা তা পরীক্ষা করার পরিবর্তে) সুস্পষ্ট ম্যাপিং তৈরি করে? এটি একটি সুন্দর সমাধান, আমি সন্দেহ করি আপনি কম কমান্ড ব্যবহার করে কোনও সমাধান করতে পারেন।
ম্যাক্সবি

@ ম্যাক্সব Pহ'ল পণ্য। এটি মূলত একটি তালিকার সমস্ত মানকে গুণ করে। Åpপ্রথম একটি তালিকা তৈরি করবে nমৌলিক সংখ্যার পরিমাণ, যেখানে nইনপুট Iএই ক্ষেত্রে। åযদি তারা অসীম তালিকা, যেখানে এটি দেব বর্তমান সংখ্যার রয়েছে মৌলিক সংখ্যার এই তালিকায় থাকা প্রতিটি সংখ্যার জন্য চেক করবে 1truthy এবং 0falsey জন্য। সুতরাং পণ্যটি মূলত সমস্ত সত্য হয় কিনা তা পরীক্ষা করে; যদি সমস্ত প্রাইম বর্তমান সংখ্যার মধ্যে থাকে। যদি কোনও হয় 0, Pফলাফল এছাড়াও মিথ্যা। তবে যদি সব হয় 1তবে Pফলাফল সত্যে আসে এবং লুপ বন্ধ হয়ে যায়।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন দেখলাম, ব্যাখ্যাটির জন্য ধন্যবাদ!
সর্বোচ্চ

1
নতুন সংস্করণ ব্যবহার করে খুব সুন্দর সমাধান! আমি পাশাপাশি 8 বাইট ছিল, কিন্তু 05AB1E উত্তরাধিকার সংস্করণে: 1µNIÅpåP। যারা 05AB1E আমার জন্য একটি ব্যাখ্যা হিসাবে ভাল জানি না এর জন্য: - যতক্ষণ না পাল্টা পরিবর্তনশীল 1 ছুঁয়েছে (এটা 0 আরম্ভ, বৃদ্ধি N1 ধীরে ধীরে এবং পালন করুন: NIÅpåP- চেক যদি প্রথম <ইনপুট> সব মৌলিক প্রদর্শিত Nএবং যদি তাই হয়, পাল্টা পরিবর্তনশীল স্বয়ংক্রিয়ভাবে বাড়ায় এন চূড়ান্ত মান দেখায়।
জনাব Xcoder

@ Mr.Xcoder: এটা আসলে আমার প্রথম সংস্করণ হিসেবে ভাল ছিল না (এর সাথে Xপরিবর্তে 1, কারণ becuase), কিন্তু আমি এই স্যুইচ যেহেতু আমি ব্যবহার করার জন্য একটি সুযোগ ছিল করেছি আগে :)
Emigna

5

জেলি , 11 বাইট

³ÆN€ẇ€µẠ$1#

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

সাধারণ উদ্দীপনা। #আধ্যাত্মিকতা কীভাবে কাজ করে তা সম্পূর্ণ নিশ্চিত নয় , সুতরাং উন্নতির জন্য কিছু জায়গা থাকতে পারে।

কিভাবে এটা কাজ করে

³ÆN€ẇ€µẠ$1#    Main link. Input: Index n.
         1#    Find the first natural number N that satisfies:
³ÆN€             First n primes...
    ẇ€           ...are substrings of N
      µẠ$        All of them are true

"শর্তের সাথে ফিল্টার অধীনে স্থির" "শর্তটি সবার জন্য সত্য" এর পরিবর্তে কাজ করতে পারে।
ব্যবহারকারী 202729

2
wⱮẠ¥1#ÆN€দুটি বাইট সংরক্ষণ
ডেনিস

5

জাভা 8, 143 বাইট

n->{int r=1,f=1,c,i,j,k;for(;f>0;r++)for(i=2,f=c=n;c>0;c-=j>1?1+0*(f-=(r+"").contains(j+"")?1:0):0)for(j=i++,k=2;k<j;)j=j%k++<1?0:j;return~-r;}

এটি অনলাইনে চেষ্টা করুন।
নোট:

  1. উপরে বার বার n=7
  2. পর্যাপ্ত সময় এবং সংস্থান প্রদত্ত এটি কেবলমাত্র সর্বাধিক (সর্বোচ্চ ) এর n=9সীমাবদ্ধতার কারণে সর্বাধিক পর্যন্ত কাজ করে । int2,147,483,647
    • সঙ্গে +4 বাইট পরিবর্তন intএকটি থেকেlong সর্বোচ্চ নীচে একটি আউটপুট বেড়ে যায় 9,223,372,036,854,775,807(প্রায় n=20আমার মনে হয়?)
    • java.math.BigIntegerসর্বাধিক ব্যবহার করে যে কোনও আকারে (তত্ত্ব অনুসারে) বাড়ানো যেতে পারে তবে এটি কমপক্ষে java.math.BigIntegerএর পদ্ধতিগুলির ভারবসিলতার কারণে প্রায় 200 বাইটের কাছাকাছি হবে ..

ব্যাখ্যা:

n->{                   // Method with integer as both parameter and return-type
  int r=1,             //  Result-integer, starting at 1
      f=1,             //  Flag-integer, starting at 1 as well
      c,               //  Counter-integer, starting uninitialized
      i,j,k;           //  Index integers
  for(;f>0;            //  Loop as long as the flag is not 0 yet
      r++)             //    After every iteration, increase the result by 1
    for(i=2,           //   Reset `i` to 2
        f=c=n;         //   Reset both `f` and `c` to the input `n`
        c>0;           //   Inner loop as long as the counter is not 0 yet
        c-=            //     After every iteration, decrease the counter by:
           j>1?        //      If `j` is a prime:
            1          //       Decrease the counter by 1
            +0*(f-=    //       And also decrease the flag by:
                   (r+"").contains(j+"")?
                       //        If the result `r` contains the prime `j` as substring
                    1  //         Decrease the flag by 1
                   :   //        Else:
                    0) //         Leave the flag the same
           :           //      Else:
            0)         //       Leave the counter the same
      for(j=i++,       //    Set `j` to the current `i`,
                       //    (and increase `i` by 1 afterwards with `i++`)
          k=2;         //    Set `k` to 2 (the first prime)
          k<j;)        //    Inner loop as long as `k` is smaller than `j`
        j=j%k++<1?     //     If `j` is divisible by `k`
           0           //      Set `j` to 0
          :            //     Else:
           j;          //      Leave `j` the same
                       //    (If `j` is unchanged after this inner-most loop,
                       //     it means `j` is a prime)
  return~-r;}          //  Return `r-1` as result

5

জাভাস্ক্রিপ্ট (ES6),  105 ... 92  91 বাইট

n=>(k=1,g=(s,d=k++)=>n?k%d--?g(s,d):g(d?s:s+`-!/${n--,k}/.test(n)`):eval(s+';)++n'))`for(;`

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

কিভাবে?

এন

"-!/2/.test(n)-!/3/.test(n)-!/5/.test(n)-!/7/.test(n)-!/11/.test(n)..."

এন

eval('for(;' + <conditions> + ';)++n')

মন্তব্য

n => (                             // main function taking n
  k = 1,                           // k = current prime candidate, initialized to 1
  g = (s,                          // g = recursive function taking the code string s
          d = k++) =>              //     and the divisor d
    n ?                            // if n is not equal to 0:
      k % d-- ?                    //   if d is not a divisor of k:
        g(s, d)                    //     recursive call to test the next divisor
      :                            //   else:
        g(                         //     recursive call with s updated and d undefined:
          d ?                      //       if d is not equal to 0 (i.e. k is composite):
            s                      //         leave s unchanged
          :                        //       else (k is prime):
            s +                    //         decrement n and add to s
            `-!/${n--,k}/.test(n)` //         the next condition based on the prime k
                                   //       the lack of 2nd argument triggers 'd = k++'
        )                          //     end of recursive call
    :                              // else (n = 0):
      eval(s + ';)++n')            //   complete and evaluate the code string
)`for(;`                           // initial call to g with s = [ "for(;" ]


4

পাইথ , 14 বাইট

এন>5

f@I`M.fP_ZQ1y`

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

f@I`M.fP_ZQ1y`     Full program. Q is the input.
f                  Find the first positive integer that fulfils the condition.
 @I`M.fP_ZQ1y`     Filtering condition, uses T to refer to the number being tested.
     .f   Q1       Starting at 1, find the first Q positive integers (.f...Q1) that
       P_Z         Are prime.
   `M              Convert all of those primes to strings.
  I                Check whether the result is invariant (i.e. doesn't change) when...
 @          y`     Intersecting this list with the powerset of T as a string.

পাইথ , 15 বাইট

কিছুটা দ্রুত তবে 1 বাইট লম্বা।

f.A/L`T`M.fP_ZQ

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

f.A/L`T`M.fP_ZQ     Full program. Q is the input.
f                   Find the first positive integer that fulfils the condition.
 .A/L`T`M.fP_ZQ     Filtering condition, uses T to refer to the number being tested.
         .f   Q     Starting at 1, find the first Q positive integers (.f...Q) that
           P_Z      Are prime.
       `M           Convert all of those primes to strings.
 .A/L               And make sure that they all (.A) occur in (/L)...
     `T             The string representation of T.


3

কাঠকয়লা , 42 বাইট

≔¹ηW‹LυIθ«≦⊕η¿¬Φυ¬﹪ηκ⊞υη»≔¹ηWΦυ¬№IηIκ≦⊕ηIη

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔¹ηW‹LυIθ«≦⊕η¿¬Φυ¬﹪ηκ⊞υη»

nপূর্বে পাওয়া সমস্ত প্রধান সংখ্যা দ্বারা সমস্ত পূর্ণসংখ্যার পরীক্ষার বিভাগ দ্বারা প্রথম মৌলিক সংখ্যাগুলি তৈরি করুন ।

≔¹ηWΦυ¬№IηIκ≦⊕η

সমস্ত সংখ্যার মধ্য দিয়ে লুপ করুন যতক্ষণ না আমরা এমন কোনও সন্ধান পাই যা সাবস্ট্রিং হিসাবে সমস্ত প্রাইম রয়েছে।

Iη

ফলাফলটি স্ট্রিংয়ে কাস্ট করুন এবং অন্তর্নিহিতভাবে মুদ্রণ করুন।

শেষটির ≦⊕ηসাথে প্রতিস্থাপন করে বাইটের দামে প্রোগ্রামটির গতি দ্বিগুণ করা যেতে পারে ≦⁺²ηতবে এটি এখনও গণনা করতে খুব ধীর হয় n>6


3

পার্ল 6 , 63 59 বাইট

-4 বাইট নোহেলহোফকে ধন্যবাদ

{+(1...->\a{!grep {a~~!/$^b/},(grep &is-prime,2..*)[^$_]})}

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

5 টির উপরে সংখ্যার জন্য টিআইওতে একটি নিষ্ঠুর বলের সমাধান হয় তবে আমি নিশ্চিত যে এটি সঠিকভাবে কাজ করে। প্রথম ইতিবাচক সংখ্যা সহ প্রথম ধনাত্মক সংখ্যাটি সন্ধান করে nএখানে এমন একটি সমাধান রয়েছে যা শেষ হতে পারে না n=6

ব্যাখ্যা:

{                                                             } # Anonymous code block
 first                                                    2..*  # Find the first number
       ->\a{                                            }       # Where:
            !grep     # None of
                                                   [^$_]  # The first n
                              (grep &is-prime,2..*)       # primes
                  {a~~!/$^b/},   # Are not in the current number

আপনার কাছে কি আরও বড় সংখ্যার জন্য আউটপুট যাচাই করার কোনও উপায় আছে, বা ব্যাখ্যা যুক্ত করুন? আমি পার্লে সাবলীল নই, এবং আমি অবশ্যই গল্ফ-পারলে সাবলীল নই । আমি ইনপুট 5 এর জন্য টিআইওতে একটি টাইমআউট পেয়েছি, তাই আমি সত্যিই যাচাই করতে পারি না যে এটি কেবল প্রাইমসকে একত্রিত করে না।
ম্যাক্সব

@ ম্যাক্সবি আমি একটি সমাধানের সাথে একটি লিঙ্ক যুক্ত করেছি যা বারবার এবং ব্যাখ্যাের পরিবর্তে প্রাইমগুলি উত্পন্ন করে।
জো কিং


2

পাইথন 2 , 91 বাইট

n=input();l=[]
P=k=1
while~-all(`x`in`k`for x in(l+[l])[:n]):P*=k*k;k+=1;l+=P%k*[k]
print k

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


যদি আমি না জানতাম যে আপনার কোডটি প্রাইম সংখ্যা উত্পন্ন করেছে, তবে আমি এটি কখনই এটি করতে পেরেছি। দারূন কাজ!
ম্যাক্সবি

2

এসএএস, 149 বাইট

data p;input n;z:i=1;a=0;v+1;do while(a<n);i+1;do j=2 to i while(mod(i,j));end;if j=i then do;a+1;if find(cat(v),cat(i))=0 then goto z;end;end;cards; 

cards;বিবৃতি অনুসরণ করে ইনপুট প্রবেশ করানো হয়েছে, এর মতো:

data p;input n;z:i=1;a=0;v+1;do while(a<n);i+1;do j=2 to i while(mod(i,j));end;if j=i then do;a+1;if find(cat(v),cat(i))=0 then goto z;end;end;cards; 
1
2
3
4
5
6
7

pফলাফলের vসাথে প্রতিটি ইনপুট মানের জন্য আউটপুট সারি সহ একটি ডেটাসেট আউটপুট দেয়। প্রযুক্তিগতভাবে প্রদত্ত সমস্ত পরীক্ষা-মামলার জন্য কাজ করা উচিত (এসএএস-এ পূর্ণ নির্ভুলতার সাথে সর্বাধিক পূর্ণসংখ্যা 9,007,199,254,740,992 হয়), তবে আমি এন = 8 এ 5 মিনিটের জন্য চিন্তাভাবনা করার পরে ছেড়ে দিয়েছি।

ব্যাখ্যা:

data p;
input n; /* Read a line of input */

z: /* Jump label (not proud of this) */
    i=1; /* i is the current value which we are checking for primality */
    a=0; /* a is the number of primes we've found so far */
    v+1; /* v is the final output value which we'll look for substrings in */ 

    do while(a<n); /* Loop until we find the Nth prime */
        i+1; 
        do j=2 to i while(mod(i,j));end; /* Prime sieve: If mod(i,j) != 0 for all j = 2 to i, then i is prime. This could be faster by only looping to sqrt(i), but would take more bytes */
        if j=i then do; /* If i is prime (ie, we made it to the end of the prime sieve)... */
            a+1;
            if find(cat(v),cat(i))=0 then goto z; /* If i does not appear as a substring of v, then start all over again with the next v */
        end;
    end;

/* Input values, separated by newlines */
cards; 
1
2
3
4
5
6
7

1

হাস্কেল , ১০২ বাইট

import Data.List
f n|x<-[2..n*n]=[a|a<-[2..],all(`isInfixOf`show a).take n$show<$>x\\((*)<$>x<*>x)]!!0

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

ব্যাখ্যা / অবহেলিত

যেহেতু আমরা ইতিমধ্যে Data.Listআমদানি করেছি আমরা এটির পাশাপাশি ব্যবহার করতে পারি: ভাল take n[p|p<-[2..],all((>0).mod p)[2..p-1]]পুরাতনটির পরিবর্তে আমরা আমাদের প্রয়োজনীয় সমস্ত প্রাইম উত্পাদন করার অন্য উপায়টি ব্যবহার করতে পারি। যথা, আমরা পর্যাপ্ত পরিমাণে সংমিশ্রণ তৈরি করি এবং এগুলি একসাথে ব্যবহার করি (\\):

[2..n*n] \\ ( (*) <$> [2..n*n] <*> [2..n*n] )

n*nপর্যাপ্ত ব্যবহার কারণπ(এন)<এন2লগ(এন2)। বাকিগুলি কেবল একটি সাধারণ তালিকা অনুধাবন:

[ a | a <- [2..], all (`isInfixOf` show a) . take n $ enoughPrimes ] !!0

1

Japt, 20 18 বাইট

আমার সেরা কাজ থেকে অনেক দূরে, আমি যে দিনটি কাটিয়েছি তার পরে এটি কাজ করতে পেরে আমি খুব খুশি হয়েছিল। আমি নিশ্চিত যে আমি পরে এটি বুজে ডাউন ট্যাপ শেষ করব!

_õ fj ¯U e!øZs}aUÄ

এটি ব্যবহার করে দেখুন - এর জন্য একটি ইনপুট চালাতে 13 সেকেন্ড সময় লাগে 7, তার পরে একটি জোরে ছুড়ে দেয় (আপডেট হওয়া সংস্করণটি 5আমার জন্য ক্রেপ করে উঠল , তবে এটি কেবল আমার ফোন হতে পারে)।


অলিভার, হুম ... আমাকেও। এটি পোস্ট করার সময় এটি অবশ্যই কাজ করছিল। খালি F.h()নিজের ব্যবহার করে একটি পরীক্ষা চালিয়েছি এবং মনে হচ্ছে এটি ভেঙে গেছে; ETH অবশ্যই কিছু পরিবর্তন করেছে।
শেগি

@ অলিভার, না, শেষ প্রতিশ্রুতি 2 দিন আগে হয়েছিল সুতরাং আমি পোস্ট করার পরে কিছুই পরিবর্তন হয়নি। অদ্ভুত!
শেগি

এটা এখন কাজ করছে! ¯ \: _ (ツ): _ / ¯
অলিভার

@ অলিভার, এখনও আমার পক্ষে কাজ করছে না। উইডার্ডার এবং উইডার্ডার!
শেগি

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