কিছু একাকী পুরস্কার


10

আমি জানি, আমি জানি, আরও একটি প্রধান চ্যালেঞ্জ ...

সম্পর্কিত

একজন নিঃসঙ্গ (অথবা বিচ্ছিন্ন) প্রধান একটি মৌলিক সংখ্যা pযেমন যে p-2, p+2, p-4, p+4... p-2k, p+2kকিছু জন্য kসব যৌগিক হয়। আমরা এই জাতীয় একটি প্রধানমন্ত্রীকে বার-বিচ্ছিন্ন প্রধানমন্ত্রী বলে থাকি callk

উদাহরণস্বরূপ, একটি 5 তম বার-বিচ্ছিন্ন প্রধানমন্ত্রী 211, যেহেতু 201, 203, 205, 207, 209, 213, 215, 217, 219, 221সমস্তগুলি সংমিশ্রিত। ( p-2*5=201, p-2*4=203ইত্যাদি)

চ্যালেঞ্জ

দুটি ইনপুট পূর্ণসংখ্যা দেওয়া হয়েছে n > 3এবং এর চেয়ে কঠোরভাবে বৃহত্তর বৃহততমতম টাইম-বিচ্ছিন্ন প্রাথমিক k > 0আউটপুট দেয় ।kn

উদাহরণস্বরূপ, পরিসরের জন্য k = 5এবং যে কোনও nক্ষেত্রে 4 ... 210, আউটপুট হওয়া উচিত 211, যেহেতু এটি সর্বনিম্নতম 5-বার-বিচ্ছিন্ন প্রধান ইনপুটটির চেয়ে কঠোরভাবে বড় n

উদাহরণ

n=55 k=1
67

n=500 k=1
503

n=2100 k=3
2153

n=2153 k=3
2161

n=14000 k=7
14107

n=14000 k=8
14107

বিধি

  • প্রযোজ্য হলে, আপনি ধরে নিতে পারেন যে ইনপুট / আউটপুটটি আপনার ভাষার নেটিভ পূর্ণসংখ্যার প্রকারে ফিট করবে।
  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক পদ্ধতি দ্বারা দেওয়া যেতে পারে ।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরে আসতে পারেন।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

3 য় বার-বিচ্ছিন্ন প্রধানমন্ত্রী কি দ্বিতীয়বারের মতো বিচ্ছিন্ন প্রধানমন্ত্রী?
এরিক আউটগল্ফার

@ এরিকথিউটগল্ফার শেষ দুটি পরীক্ষার ক্ষেত্রে সত্যই তা নিশ্চিত হয়ে গেছে।
কেভিন ক্রুজসসেন

1
@ কেভিন ক্রুজসেন টেস্টের মামলাগুলি চ্যালেঞ্জের নির্দিষ্টকরণের অংশ নয়।
এরিক আউটগল্ফার

1
@ এরিকথ আউটগল্ফার হ্যাঁ, kসংজ্ঞা k-1, k-2ত্রয়োদশ, ইত্যাদি ইত্যাদির দ্বারা একটি দ্বিগুণ -বিচ্ছিন্নও রয়েছে
অ্যাডমবর্কবার্ক

@ অ্যাডমবার্কবার্ক কেবল পরীক্ষা করতে চেয়েছিলেন, ধন্যবাদ।
এরিক আউটগল্ফার

উত্তর:


3

জেলি , 17 13 বাইট

_æR+⁼ḟ
‘ç1#Ḥ}

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

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

‘ç1#Ḥ}  Main link. Left argument: n. Right argument: k

‘       Increment; yield n+1.
    Ḥ}  Unhalve right; yield 2k.
 ç1#    Call the helper link with arguments m = n+1, n+2, ... and k until 1 one
        them returns a truthy value. Return the matching [m].


_æR+⁼ḟ  Helper link. Left argument: m. Right argument: k

_       Subtract; yield m-2k.
   +    Add; yield m+2k.
 æR     Prime range; yield the array of primes in [m-2k, ..., m+2k].
     ḟ  Filterfalse; yield the elements of [m] that do not occur in [k], i.e., [m]
        if m ≠ 2k and [] otherwise.
        The result to the left will be non-empty when m = 2k, as there always is
        a prime in [0, ..., 2m], since m > n > 3.
    ⁼   Test the results to both sides for equality.
        This yields 1 iff m is the only prime in [m-2k, ..., m+2k].


2

জাভা 8, 144 143 বাইট

(n,k)->{for(k*=2;;)if(p(++n)>1){int i=-k;for(;i<=k&p(n+i)<2|i==0;i+=2);if(i>k)return n;}}int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}

ব্যাখ্যা:

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

(n,k)->{                      // Method with two integer parameters and integer return-type
  for(k*=2;                   //  Multiply `k` by 2
      ;)                      //  Loop indefinitely
    if(p(++n)>1){             //   Increase `n` by 1 before every iteration with `++n`
                              //   And if it's a prime:
      int i=-k;for(;i<=k      //    Loop `i` from `-k` to `k` (inclusive)
        &p(n+i)<2|i==0;       //    As long as `n+i` is not a prime (skipping `n` itself)
        i+=2);                //    And iterate in steps of 2 instead of 1
      if(i>k)                 //    If we've reached the end of the loop:
        return n;}}           //     We've found our result, so return it

// Separated method to check if `n` is a prime
// `n` is a prime if it remained unchanged, and not when it became 0 or 1
int p(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}


2

স্ট্যাক্স , 14 বাইট

åΣ▀ë F▬&■º↔╔^∞

এটি চালান এবং এটি ডিবাগ করুন

এটি হ'ল সংশ্লিষ্ট আসকি উপস্থাপনা।

w^x:r{Hn+|p_!=m0#

w                   while; run the rest of the program until a falsy value remains
 ^                  increment candidate value.
  x:r               [-x, ..., -1, 0, 1, ... x] where x is the first input
     {        m     map using block, using k from -x to x
      Hn+           double and add to candidate value - this is "p+2k"
         |p         is it prime? produces 0 or 1
           _!       k is zero?
             =      two values are equal; always true for a passing candidate
               0#   any falses left after mapping? if so, continue running

2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 94 92 89 বাইট

f=(n,k)=>(Q=y=>y<-k||(P=(a,b=2)=>a>b?a%b&&P(a,b+1):1)(n+2*y)^!!y&&Q(--y))(k,++n)?n:f(n,k)

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

রহস্যজনকভাবে, আরও গল্ফগুলি স্ট্যাকের ওভারফ্লো শেষ করে। কেবল এটি 14000 আকারে কাজ করে।

অবশেষে একটি গল্ফ যা 14000 এ স্ট্যাক ওভারফ্লো শেষ করবে না।

ব্যাখ্যা

f=(n,k)=>            // Two inputs
 (Q=y=>              // Function checking whether all numbers in 
                     // [n-2*k, n+2*k] except n are all composite
  y<-k               // The counter runs from k to -k
                     // If none breaks the rule, return true
  ||(P=(a,b=2)=>     // Function checking primality
   a>b?              // Check if a>b
   a%b&&P(a,b+1)     // If a>b and a%b==0 return false, else proceed
   :1                // If a<=b return 1 (prime)
  )(n+2*y)^!!y       // If n+2*y is prime, then y must be 0
                     // If n+2*y is not prime, then y must be non-zero
                     // If none of the conditions are met, return false
  &&Q(--y)           // Else proceed to the next counter
 )
 (k,++n)?            // Add 1 to n first, then start the check
 n                   // If conditions are met, return n
 :f(n,k)             // Else proceed to the next n.


1

রুবি + -rprime, 73 71 61 57 বাইট

->n,k{n+=1;(-k..k).all?{|i|(i*2+n).prime?^(i!=0)}?n:redo}

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

শিখতে ভালো লাগছে! আমি এখানে পিপিসিজিতে শিখেছি এমন কৌশল এবং কৌশলগুলি ব্যবহারInteger#[]redo করছি মজাদার কৌশলগুলির আগাছায় হারিয়ে যাচ্ছি ...

-1 বাইট: কমপক্ষে উল্লেখযোগ্য বিট পাওয়ার n%2পরিবর্তে ব্যবহার করুন n[0]। ধন্যবাদ, অসোন তুহিদ !

-1 বাইট: বুলিয়ান এক্সপ্রেশন পরিবর্তে একটি টার্নারি অপারেটর ব্যবহার করুন। ধন্যবাদ, অসোন তুহিদ !

-১০ বাইট: .prime?দু'বার টাইপ করা এড়াতে এক্সওআর অপারেটরটি ব্যবহার করুন ... এটি এখন আমার হিসাবে যতটা অসন তুহিদ এর উত্তর ঠিক তেমন :)

-4 বাইট: এমনকি মানগুলি পরীক্ষা করে কোনও ক্ষতি নেই nঅসোন তুহিদ অবিরাম।

Ungolfed:

->n,k{
  n += 1;                   # Increment n
  (-k..k).all?{|i|          # In the set [n-2*k, n+2*k], is every number
    (i*2+n).prime? ^ (i!=0) #    EITHER prime XOR different from n itself?
  } ? n                     # If yes, return the current value of n
  : redo                    # Otherwise, restart the block
}


আহ্ চমৎকার! @ মিস্টার এক্সকোডার আমাকে মেটাতে আপ টু ডেট রাখার জন্য ধন্যবাদ।
benj2240

1
71 বাইট । এই ক্ষেত্রেটির n%2চেয়ে সংক্ষিপ্ত n[0]এবং ?...:&&...||
এটির




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