প্রাকৃতিক সংখ্যার মধ্যে একটি গল্ফ গল্ফ যা প্রাইমগুলির যথাযথ উপসেটটিতে মানচিত্রকে মানচিত্র করে


14

সংজ্ঞা

  • একজন bijection একটি সেট থেকে Sএকটি সেট থেকে Tথেকে একটি ফাংশন Sথেকে Tযেমন যে এক উপাদানের ক্ষেত্রে Tঠিক এক উপাদান দ্বারা ম্যাপ করা হয় S

  • একটি একটি সেট মধ্যে bijection S থেকে একটি bijection হয় Sথেকে S

  • স্বাভাবিক সংখ্যার পূর্ণসংখ্যার যা তার চেয়ে অনেক বেশী বা সমান 0

  • একটি সেট একটি উপসেটS একটি সেট যেমন সেট প্রতিটি উপাদান এছাড়াও হয় S

  • একটি উপসেট একটি সেটের Sএকটি সেট একটি উপসেট হয় যে Sযা সমান নয় S

কার্য

একটি প্রোগ্রাম / ফাংশন লিখুন যা একটি প্রাকৃতিক সংখ্যা ইনপুট হিসাবে গ্রহণ করে এবং একটি প্রাকৃতিক সংখ্যা আউটপুট করে। এটা একটা bijection হতে হবে, এবং প্রোগ্রাম / ফাংশন অধীনে মৌলিক সংখ্যার ইমেজ, {f(p) : p ∈ ℙ}, একটি উপসেট হতে হবে , যেখানে মৌলিক সংখ্যার হয়।

স্কোরিং

এটি । বাইট জিতে সংক্ষিপ্ত উত্তর। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য


উত্তর:


17

গণিত, 54 48 বাইট

±(t=x_?PrimeQ)=NextPrime@x
±n_:=Abs[n-1]/.t:>x-1

নিম্নলিখিত বাইজেকশন সংজ্ঞা দেয়:

 n  0, 1, 2, 3, 4, 5, 6,  7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ...
±n  1, 0, 3, 5, 2, 7, 4, 11, 6, 8,  9, 13, 10, 17, 12, 14, 15, 19, ...

মূল ধারণাটি হ'ল প্রতিটি প্রাইমকে পরের ম্যাপে ম্যাপ করা, এটি নিশ্চিত করা যে সেগুলি যথাযথ উপসেটে ম্যাপ করা আছে। এর ফলাফল 2 এ "ফাঁক" হয় । এই শূন্যস্থানটি পূরণ করার জন্য, আমরা ফাঁকটি "বুদ্বুদ আপ" করতে 4 থেকে 2 এবং তারপরে একে অপরের সম্মিলিত সংখ্যাকে পূর্ববর্তী যৌগিক সংখ্যায় ম্যাপ করতে চাই । যেহেতু 2 এবং 3 কেবল দুটি সংলগ্ন প্রাইম, তাই আমরা এই ম্যাপিংগুলিকে উভয়ই " এন -1 বা এটি প্রাইম হলে এন -2 " হিসাবে প্রকাশ করতে পারি । অবশেষে, এই ম্যাপিংটি প্রেরণ শেষ হয় 1 থেকে 0 এবং আমরা এন -1 এর পরম মান ধরে 0 থেকে 1 তে প্রেরণ করি ।


আপনার কি মানচিত্রের দরকার 0?
নিল

@ নিল আমি করি, তবে আমি এখনই বাইশনটি পরিবর্তন করেছি।
মার্টিন ইন্ডার

8

এমএটিএল , 21 বাইট

একটি ভুল চিহ্নিত করার জন্য এমিগিনার ধন্যবাদ , এখন সংশোধন করা হয়েছে

tZp?_Yq}q:Zp~fX>sG~E+

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

এটি নিম্নলিখিত বাইজেকশন কার্যকর করে। একটি সারিতে প্রাইমগুলি এবং নীচে অ-প্রাইমগুলি লিখুন:

2  3  5  7 11 13 17 ...
0  1  4  6  8  9 10 ...

তারপরে ইনপুট থেকে তীর অনুসরণ করে আউটপুট পাওয়া যায়:

2 > 3 > 5 > 7 > 11 > 13 > 17 ...
^
0 < 1 < 4 < 6 <  8 <  9 < 10 ...

বর্ণিত কোড

t       % Implicit input. Duplicate
Zp      % Is it a prime? Gives true / false
?       % If so
  _Yq   %   Next prime
}       % Else
  q     %   Subtract 1
  :     %   Range from 1 to that
  Zp~   %   Is each entry not a prime? Gives an array of true / false
  f     %   Find non-zero entries, i.e. non-primes. Will be empty for input 1
  X>    %   Maximum. This gives the greatest non-prime less than the input.
        %   Will be empty for input 1
  s     %   Sum. This is to transform empty into 0
  G~E   %   Push input, negate, times 2. This gives 2 for input 0, or 0 otherwise
  E     %   Add. This handles the case of input 0, so that it outputs 2
        % End (implicit). Display (implicit)


3

জাভাস্ক্রিপ্ট (ES6), 82 77 75 বাইট

লুইস মেন্ডোর উত্তর হিসাবে একই যুক্তি কার্যকর করে ।

f=(n,i=(P=(n,x=n)=>n%--x?P(n,x):x==1||-1)(x=n))=>x?x==n|P(n)-i?f(n+i,i):n:2

ফর্ম্যাট এবং মন্তব্য

f = (                   // given:
  n,                    // - n = input
  i =                   // - i = 'direction' to move towards
    (P = (n, x = n) =>  // - P = function that returns:
      n % --x ?         //   - 1 when given a prime
        P(n, x)         //   - -1 when given a composite number
      :                 //
        x == 1 || -1    //
    )(x = n)            // - x = copy of the original input
) =>                    //
  x ?                   // if the input is not zero:
    x == n | P(n) - i ? //   if n equals the input or doesn't match its primality:
      f(n + i, i)       //     do a recursive call in the chosen direction
    :                   //   else:
      n                 //     return n
  :                     // else:
    2                   //   return 2

ডেমো


2

জেলি , 12 বাইট

Æn_ḍ@¡ÆP?2»0

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

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

Æn_ḍ@¡ÆP?2»0  Main link. Argument: n (non-negative integer)

      ÆP?     If the input is prime:
Æn                Compute the next prime after n.
              Else:
   ḍ@¡   2        Do once if n is divisible by 2, zero times if not.
  _      2        Subtract 2.
              So far, we've mapped all primes to the next prime, all even integers
              (except 2) to the previous even integer, and all composite, odd,
              positive integers to themselves. In particular, 0 -> 2, but 0 doesn't
              have a preimage, so we need 0 -> 0.
          »0  Take the maximum of the result and 0, mapping 0 -> max(-2, 0) = 0.

উম্ম, দয়া করে একটি ব্যাখ্যা যুক্ত করুন?
এরিক আউটগলফার

পছন্দ করেছেন
ডেনিস

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