বিটফ্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা


26

কখনও কখনও, কোনও প্রোগ্রাম লেখার সময় আপনাকে কোনও কারণে বা অন্য কারণে (যেমন ক্রিপ্টোগ্রাফি) একটি মৌলিক সংখ্যা ব্যবহার করা প্রয়োজন। আমি ধরে নিই যে কখনও কখনও আপনার একটি সংমিশ্রণ সংখ্যাও ব্যবহার করা প্রয়োজন। কখনও কখনও, এখানে কমপক্ষে পিপিসিজিতে আপনার প্রোগ্রামটি স্বেচ্ছাসেবী পরিবর্তনগুলি মোকাবেলা করতে সক্ষম হতে হবে। এবং পরিস্থিতিতে একটি আকর্ষণীয় পিপিসি প্রশ্ন করার সুবিধার্থে সংবিধানযুক্ত, সম্ভবত আপনি যে সংখ্যাগুলি ব্যবহার করছেন তা দুর্নীতির বিরুদ্ধে প্রতিরোধী হতে হবে ...

সংজ্ঞা

একটি সংমিশ্রণ সংখ্যাটি পূর্ণসংখ্যা 4 ≥ যা প্রাইম নয়, অর্থাত্ এটি 1 টির চেয়ে কম দুটি ছোট পূর্ণসংখ্যার গুণফল follows ন্যূনতম সম্ভাব্য বিটের সংখ্যা বাইনারে, আপনি সংখ্যা থেকে যে কোনও এক বা দুটি বিট পরিবর্তন করতে পারেন, এবং সংখ্যাটি এখনও সংমিশ্রিত।

উদাহরণ

উদাহরণস্বরূপ, 84 সংখ্যাটি বিবেচনা করুন b বাইনারিতে, এটি 1010100। এখানে এমন সমস্ত সংখ্যা রয়েছে যা এর চেয়ে 2 বিটের বেশি আলাদা নয়:

0000100 4 2 × 2
0010000 16 4 × 4
0010100 20 4 × 5
0010101 21 3 × 7
0010110 22 2 × 11
0011100 28 4 × 7
0110100 52 4 × 13
1000000 64 8 × 8
1000100 68 4 × 17
1000101 69 3 × 23
1000110 70 7 × 10
1001100 76 4 × 19
1010000 80 8 × 10
1010001 81 9 × 9
1010010 82 2 × 41
1010100 84 7 × 12
1010101 85 5 × 17
1010110 86 2 × 43
1010111 87 3 × 29
1011000 88 8 × 11
1011100 92 4 × 23
1011101 93 3 × 31
1011110 94 2 × 47
1100100 100 10 × 10
1110000 112 8 × 14
1110100 116 4 × 29
1110101 117 9 × 13
1110110 118 2 × 59
1111100 124 4 × 31

প্রথম কলামটি বাইনারি সংখ্যা; দ্বিতীয় কলামটি দশমিকের সংখ্যা। তৃতীয় কলামটি ইঙ্গিত হিসাবে, এই সমস্ত সংখ্যার সম্মিলিত। যেমন, 84 হ'ল বিটফ্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা।

কাজটি

আপনাকে অবশ্যই নিম্নলিখিত তিনটি প্রোগ্রাম বা ফাংশনগুলির মধ্যে একটি লিখতে হবে, যেটি আপনার ভাষার জন্য সর্বাধিক অর্থবোধ করে:

  • একটি প্রোগ্রাম বা ফাংশন যা ইনপুট হিসাবে একটি nonnegative পূর্ণসংখ্যা n নেয় এবং প্রথম এন বিটফ্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যাগুলি আউটপুট করে ।
  • একটি প্রোগ্রাম বা ফাংশন যা নন-নেগেটিভ পূর্ণসংখ্যা লাগে এন ইনপুট হিসাবে, এবং কম সব bitflip-প্রতিরোধী যৌগিক সংখ্যা আউটপুট এন (অথবা আপনি পছন্দ করেন, কম বা সমান যদি এন , অর্থাত্ আপনি বেছে নিতে পারেন কিনা এন আউটপুট যদি bitflip মধ্যে অন্তর্ভুক্ত করা হয় -resistant)।
  • এমন একটি প্রোগ্রাম বা ফাংশন যা কোনও ইনপুট নেয় না এবং সমস্ত বিটফ্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যাগুলি আউটপুট করে। (প্রোগ্রামটি চলমান অবস্থায় আউটপুট উত্পাদন করতে সক্ষম এমন একটি আউটপুট প্রক্রিয়া অবশ্যই ব্যবহার করা উচিত, যেমন স্টাডাউট থেকে মুদ্রণ, একটি অলস তালিকা বা জেনারেটর; আপনি কেবল পুরো তালিকাটি গণনা করতে পারবেন না এবং এটি মুদ্রণ করতে পারবেন না))

পরীক্ষার মামলা

এখানে প্রথম কয়েকটি বিটল্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা রয়েছে:

84, 184, 246, 252, 324, 342, 424, 468, 588, 636, 664, 670, 712, 730, 934, 958

ব্যাখ্যা

  • এটি কেবলমাত্র আপনার উত্পাদন করা সংখ্যা যা বিটফ্লিপগুলির প্রতিরোধী হতে হবে। এটি প্রোগ্রাম তৈরির কাজ নয় যা তাদের বিটফ্লিপসের জন্য প্রতিরোধী বলে মনে করে; আপনার নিজের পছন্দ মতো প্রোগ্রামটিতে যে কোনও নম্বর ব্যবহার করুন।
  • আপনার আউটপুট নম্বরগুলি "নেতৃস্থানীয় শূন্য" এর বিটফ্লিপ প্রতিরোধী হতে হবে না; কল্পনা করুন যে সংখ্যাগুলি বিটগুলির ন্যূনতম সম্ভাব্য সংখ্যায় সংরক্ষণ করা হবে এবং কেবলমাত্র সেই বিটগুলি উল্টাতে প্রতিরোধী হতে হবে। তবে আপনার আউটপুট সংখ্যার প্রাথমিক 1 টি বিট বিটফ্লিপসে অনাক্রম্য হতে হবে।
  • আপনার পছন্দ মতো কোনও অ্যালগরিদম ব্যবহার করুন যা সঠিক ফলাফল দেয়; আপনি এখানে দক্ষতা চিহ্নিত করা হচ্ছে না।
  • যদি আপনি প্রমাণ করতে পারেন যে চূড়ান্তভাবে অনেক বিটল্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা রয়েছে, তবে ক) আউটপুট ফর্ম্যাটটির উপর থেকে নিষেধাজ্ঞাগুলি সরিয়ে নেওয়া হবে, এবং খ) তালিকার হার্ডকোডিংয়ের অনুমতি দেওয়া হবে (যদিও এটি কেবল গণনা করার চেয়ে আরও ভার্জোজ)। এই বিধিটি বেশিরভাগ ক্ষেত্রে কেবল সম্পূর্ণতার জন্য; আমি এটি প্রাসঙ্গিক হবে আশা করি না।

বিজয় শর্ত

এটি , তাই যথারীতি খাটো আরও ভাল। এছাড়াও যথারীতি, প্রোগ্রামটির দৈর্ঘ্য বাইটগুলি পরিমাপ করা হবে।


"এমন একটি প্রোগ্রাম বা ফাংশন যা একটি nonnegative পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং সমস্ত বিটলিপ-প্রতিরোধী সংমিশ্রণকে এন এর চেয়ে কম আউটপুট দেয় - বিটফ্লিপ-প্রতিরোধী nহলে আমি কি তাকে অন্তর্ভুক্ত করতে পারি n? (অর্থাত্ এটিকে "এন এর চেয়ে কম বা সমান করুন"?)
জংহওয়ান মিন


2
আপনার চশমাগুলি সাধারণত কতটা পরিষ্কার এবং পুঙ্খানুপুঙ্খভাবে থাকে তা আমি পছন্দ করি
লুইস মেন্ডো

দুর্নীতির বিরুদ্ধে প্রতিরোধী হওয়ার শুরুতে এই সমস্ত আলাপের সাথে আমি ভেবেছিলাম এটি আরও একটি প্রায় অসম্ভব বিকিরণ-কঠোর চ্যালেঞ্জ হতে
চলেছে

2
@ ais523 এটি খালি প্রোগ্রামটির মতো লাগবে। সমস্ত খালি প্রোগ্রামের সেট।
mbomb007

উত্তর:


5

জেলি , 20? 22 বাইট

BµJŒċ;0Ṭ^µḄµÆPoỊṀ¬
⁴Ç#

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

প্রথম n এর মতো সংখ্যা সরবরাহ করে।

সম্ভবত এটি ;0অপসারণ করা যেতে পারে (এটি ছাড়া আমরা সংখ্যাটি নিজেই সংমিশ্রিত কিনা তা পরীক্ষা করি না - সমস্ত বিট-ফ্লিপ সংমিশ্রনের সাথে কোনও প্রাইম রয়েছে কি?)

দ্রষ্টব্য যে বিট-উল্টানো সংখ্যার সেটটিতে পরীক্ষা করা যথেষ্ট নয়not(any(is prime)) । আমাদেরও পরীক্ষা করতে হবে 0যা সেটে নেই।

এটি কারণ 0প্রধান এবং যৌগিক নয় ( 1খুব হয়, তবে নীচে দেখুন)।

0একটি পাল্টা উদাহরণের মাধ্যমে যাচাই করার প্রয়োজনটি দেখা যেতে পারে:

  • 131136( 2 17 +2 6 ) এর নিম্নলিখিত বিট-ফ্লিপ সেট রয়েছে:

[0, 64, 65, 66, 68, 72, 80, 96, 192, 320, 576, 1088, 2112, 4160, 8256, 16448, 32832, 65600, 131072, 131073, 131074, 131076, 131080, 131088, 131104, 131136, 131137, 131138, 131139, 131140, 131141, 131142, 131144, 131145, 131146, 131148, 131152, 131153, 131154, 131156, 131160, 131168, 131169, 131170, 131172, 131176, 131184, 131200, 131264, 131265, 131266, 131268, 131272, 131280, 131296, 131328, 131392, 131393, 131394, 131396, 131400, 131408, 131424, 131520, 131584, 131648, 131649, 131650, 131652, 131656, 131664, 131680, 131776, 131904, 132096, 132160, 132161, 132162, 132164, 132168, 132176, 132192, 132288, 132416, 132672, 133120, 133184, 133185, 133186, 133188, 133192, 133200, 133216, 133312, 133440, 133696, 134208, 135168, 135232, 135233, 135234, 135236, 135240, 135248, 135264, 135360, 135488, 135744, 136256, 137280, 139264, 139328, 139329, 139330, 139332, 139336, 139344, 139360, 139456, 139584, 139840, 140352, 141376, 143424, 147456, 147520, 147521, 147522, 147524, 147528, 147536, 147552, 147648, 147776, 148032, 148544, 149568, 151616, 155712, 163840, 163904, 163905, 163906, 163908, 163912, 163920, 163936, 164032, 164160, 164416, 164928, 165952, 168000, 172096, 180288, 196608, 196672, 196673, 196674, 196676, 196680, 196688, 196704, 196800, 196928, 197184, 197696, 198720, 200768, 204864, 213056, 229440]

0সম্মিলিত ব্যতীত এগুলি সমস্তই 0প্রধান নয়।

1এটি অ-প্রধানমন্ত্রী এবং অ-যৌগিক এবং সেটে উপস্থিত হতে পারে। তবে আমরা যদি চাই তবে এটিকে এমনভাবে ছেড়ে দিতে পারি যেন এটি একটি সংমিশ্রিত:

  • সমস্ত ইনপুট এর চেয়ে কম বা সমান 3(যদি বিবেচনা করা হয়) 0যাইহোক (বাস্তবে এর চেয়ে কম কম 7) থাকে।

  • নাগালের থেকে 1এক বিট উল্টানো মূল সংখ্যা ফর্ম হওয়া আবশ্যক 2 +2 0 , এবং যদি এই চেয়ে বেশী 3, অর্থাৎ ট> 1 , তাহলে আমরা পৌঁছতে পারে 3বন্ধ আলোকসম্পাতের দ্বারা -বিট এবং সেটিং 1 বিট ( 2 1 +2 0 = 3 )।

  • 1দুই বিট ফ্লিপে পৌঁছানোর জন্য মূল সংখ্যাটি অবশ্যই 2 কে ফর্মের হতে হবে এবং যদি এটির চেয়ে বেশি হয় তবে 3আমরা 2তার পরিবর্তে দুটি ফ্লিপগুলিতে পৌঁছতে পারি , এবং 2এটি প্রধান।

কোডটি উভয়ই পরিচালনা করছে 0এবং 1একসাথে "তুচ্ছ" পরমাণু ব্যবহার করছে

কিভাবে?

⁴Ç# - Main link: n
⁴   - 16
  # - count up from 16 finding the first n matches of
 Ç  -     last link (1) as a monad

BµJŒċ;0Ṭ^µḄµÆPoỊṀ¬ - Link 1, test a number: i
B                  - convert to a binary list
 µ                 - start a new monadic chain
  J                - range(length): [1,2,...,nBits]
   Œċ              - pairs with replacement: [[1,1],[1,2],...,[1,nBits],[2,2],[2,3],...,[2,nBits],...,[nBits-1,nBits]]
     ;0            - concatenate a zero
       Ṭ           - untruth (makes lists with ones at those indexes - the [1,1], [2,2], etc make the one-flips, the zero makes the no-flip, the rest make the two-flips)
        ^          - exclusive or with the binary list version of i (flip the bits)
         µ         - start a new monadic chain
          Ḅ        - un-binary (get the integer values of each of the flipped versions)
           µ       - start a new monadic chain
            ÆP     - is prime? (make a list of 1s for primes and 0 for non-primes)
               Ị   - is insignificant (abs(v)<=1)
              o    - logical or (now we have true for any primes, 0 or 1 - hence non-composites)
                Ṁ  - maximum (1 if any non-composite was found)
                 ¬ - not (1 if all were composite)

ইনপুটটি কি আপনার সমস্ত সংখ্যার সেটে অন্তর্ভুক্ত রয়েছে যা সর্বাধিক 2 বিট দ্বারা পৃথক? যদি তা হয় তবে এটি কোনওভাবেই ইনপুটটির যৌগিকতা পরীক্ষা করবে।
জংহওয়ান মিন

না, সে কারণেই ;0রয়েছে - Œċসূচকগুলি প্রতিস্থাপনের সাথে সমস্ত আনর্ডারড জোড়া পেয়েছে ( J), তাই ৮৪ টির জন্য, যার b টি বিট রয়েছে ২৮ টি (একক বিট-ফ্লিপের জন্য [১,১] এর মত) "প্রতিস্থাপনের সাথে" অংশ), 29 নয় (অতিরিক্ত কোনও পরিবর্তন নয়)
জোনাথন অ্যালান

এটি মুছে ফেলা যেতে পারে যদি আমরা জানি যে কোনও প্রাইম এর অস্তিত্বের মধ্যে নেই যে এর বিট-ফ্লিপ করা কাজিনরা সমস্ত যৌগিক; তবে আমি এই সত্য সম্পর্কে নিশ্চিত নই
জোনাথন অ্যালান

5

ব্র্যাচল্যাগ , 32 38 বাইট

2<≜.¬(ḃ↰₂↰₂~ḃ≜{ṗ|ℕ<2}∧)
k~k|tgT∧?k↰:Tc

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

এটি এমন একটি ফাংশন / ভবিষ্যদ্বাণী ↰₀যা এমন কোনও জেনারেটর প্রদান করে যা এই জাতীয় সমস্ত সংখ্যা উত্পন্ন করে। (টিআইও লিঙ্কটি কেবল প্রথম সংখ্যাটি প্রিন্ট করে, যাতে কোনও কিছু পর্যবেক্ষণযোগ্য। স্থানীয়ভাবে এটি চালানো আরও অনেকগুলি তৈরি করেছে, যদিও।)

এখন 0 বা 1 (যা মূল বা যৌগিক নয়) এর দুটি বিটলিপগুলির মধ্যে থাকা সংখ্যাগুলি হ্যান্ডেল করতে আপডেট হয়েছে।

ব্যাখ্যা

সহায়ক ভবিষ্যদ্বাণী ↰₂ (সম্ভবত একটি উপাদান ব্যতীত ইনপুট সমান একটি তালিকা ফেরত দেয়)

k~k|tgT∧?k↰:Tc
   |            Either:
 ~k               the output is produced by appending an arbitrary element
k                 to the input minus its last element
                Or:
        ?k        take the input minus its last element,
          ↰       call this predicate recursively on that,
      T    :Tc    then append
     g            the singleton list consisting of
    t             the last element of the input

এই অপেক্ষাকৃত সহজ পুনরাবৃত্তি করার কোনও নিদারুণ উপায় থাকলে আমি এটি পছন্দ করতাম তবে আমি এখনও নিশ্চিত নই যে; স্পেসিফিকেশনটিতে কিছু আশাব্যঞ্জক বৈশিষ্ট্য রয়েছে তবে সেগুলি অবিহিত হিসাবে চিহ্নিত করা হয়েছে।

মূল প্রোগ্রাম ↰₀

2<≜.¬(ḃ↰₂↰₂~ḃ≜{ṗ|ℕ<2}∧)
2<≜                      For each integer greater than 2
   .                     generate it if
    ¬(                )  it does not have the following property:
      ḃ                  converting it to binary,
       ↰₂↰₂              running the helper predicate twice,
           ~ḃ            and converting back to decimal
             ≜           does not allow us to find a specific value
              {     }    that is:
               ṗ           prime;
                |        or:
                 ℕ<2       nonnegative and less than 2
                     ∧   (disable an unwanted implicit constraint)

4

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

একটি সম্পূর্ণ প্রোগ্রাম যা মিলে যাওয়া পূর্ণসংখ্যার সংখ্যার জন্য অনুরোধ করে এবং তাদের ব্যবহার করে একে একে প্রদর্শন করে alert()

for(i=prompt(n=2);i;n+=2)(g=b=>b>n?alert(n,i--):(C=(n,x=n)=>n%--x?C(n,x):x>1)(n^b|1)&&g(b*2))(1)

আপনার ব্রাউজারটি টেল কল অপ্টিমাইজেশান ব্যবহারের জন্য সেট আপ না করা না হলে অবশেষে পুনরাবৃত্তি ওভারফ্লো হওয়ার কারণে এটি ভেঙে যাবে।

নীচে একটি পুনরাবৃত্ত সংস্করণ (১০২ বাইট) দেওয়া আছে।

for(i=prompt(n=2);i;n+=2){for(c=b=1;b<n;b*=2,c&=C)for(C=k=2,x=n^b|1;k<x;k++)C|=!(x%k);c&&alert(n,i--)}

ধৃষ্টতা

এই অ্যালগরিদম এই ধারণাটি উপর নির্ভর করে যে সমস্ত বিটল্লিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা সমান। এটি একটি বরং আরও সরলকরণের দিকে নিয়ে যায়: প্রতিটি সম্ভাব্য জোড়া বিট উল্টানোর পরিবর্তে আমরা কেবল বিট # 0 এবং অন্য একটিটি (বা অন্য কোনও বিটই না) ফ্লিপ করি এবং ফলাফলগুলি সমস্ত সংমিশ্রিত কিনা তা পরীক্ষা করে দেখি।

তবে, আমি কোনও স্পষ্ট প্রমাণ খুঁজে বের করতে পারি না যে একটি বিজোড় বিটফ্লিপ-প্রতিরোধী সংমিশ্রিত সংখ্যার আসলে অস্তিত্ব নেই। এটি কেবলমাত্র ছোট সংখ্যার ক্ষেত্রেই হবে না বলে মনে হয় (আমি 1,000,000 পর্যন্ত যাচাই করেছি), এবং মনে হচ্ছে বিটের সংখ্যা বাড়ার সাথে সাথে এটির সন্ধানের সম্ভাবনা হ্রাস পাচ্ছে (তবে এটি মূলত এটি সম্পর্কে আমার স্বজ্ঞাততা))


3

জেলি , 20 17 বাইট

BJŒċṬUḄ^;⁸ÆḍṂỊµÐḟ

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

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

BJŒċṬUḄ^;⁸ÆḍṂỊµÐḟ  Main link. Argument: n

              µ    Combine all links to the left into a chain.
               Ðḟ  Filter-false; keep only integers k from [1, ..., n] for which
                   the chain returns 0.
B                    Convert k to binary.
 J                   Get the indices of all digits.
  Œċ                 Take all combination of two indices, with replacement.
    Ṭ                Untruth; map each index pair [i, j] to the Boolean array of
                     length j that has 1's at (and only at) indices i and j.
     U               Upend; reverse each Boolean array.
      Ḅ              Unbinary; convert each array from base 2 to integer.
       ^             XOR the resulting numbers with k.
        ;⁸           Append k to the resulting list.
          Æḍ         Count the number of proper divisors of each result.
            Ṃ        Take the minimum.
             Ị       Insignificant; test if the minimum is 0 or 1.

1
এখন আমি ভাবছি যে এটি আমার সম্পর্কে কী বলে যে আমি বুঝতে পেরেছিলাম যে এটি কোনও ব্যাখ্যা উপলব্ধ না করেও কীভাবে কাজ করে (আপনার উত্স কোডটি পড়ার মাধ্যমে)। জেলিতে এই প্রশ্নটি সম্পর্কে আমি একবার যেতে পেরেছিলাম, তবে খুব বেশি দূর পেলাম না (অর্থাত্ আমার একটি কার্যনির্বাহী সমাধান ছিল - এটিই পরীক্ষার মামলার তালিকা তৈরি করেছে - তবে এটি স্পষ্টতই অনেকটা ভার্বোস ছিল))। আমি যেটা মিস করছিলাম তা হ'ল প্রথমে দুটি -1-বিট-এর চেয়ে বেশি-সংখ্যার সারণী তৈরি করার কৌশল এবং তারপরে এটি জোরিং।

3

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

r=range
lambda N:[n for n in r(1,N)if 1-any((bin(k).count('1')<3)*all((n^k)%q for q in r(2,n^k))for k in r(n+1))]

(দ্বিতীয় লাইনটি একটি নামবিহীন ফাংশন যা সমস্ত বিটলিপ-প্রতিরোধী সংমিশ্রণগুলির একটি তালিকা প্রদান করে যা ফাংশনটির ইনপুট থেকে কম।)

বাক্য all(u%q for q in range(2,u))গঠনটি Trueযখনই uহয় প্রধান বা তার চেয়ে কম বা এর সমান হয় তখন 2মূল্যায়ন করবে এবং অন্যথায় এটি মূল্যায়ন করবে False। (এটি শূন্যভাবে Trueযদি এর uচেয়ে কম বা সমান হয় 2))

অন্য কথায়, যদি সম্মিলিত all(u%q for q in range(2,u))হয় 0তবে এবং তার সমান u

যদি ফাংশনের ইনপুট কম হয় 2তবে ফাংশনটি একটি খালি তালিকা (পছন্দসই হিসাবে) প্রদান করে। সুতরাং ধরুন ইনপুট Nকমপক্ষে 2, এবং ধরুন 1 <= n < N। (অন্তর্ভুক্ত) মধ্য kথেকে প্রত্যেকটির জন্য কোডটি XOR এর সাথে সংমিশ্রিত কিনা তা যাচাই করবে এবং এটি বাইনারি উপস্থাপনায় সর্বাধিক দু'জনের রয়েছে কিনা তাও খতিয়ে দেখবে । যদি সম্মিলিত হয়, বা যদি এর চেয়ে বেশি দুটি থাকে তবে এটি এর পরবর্তী মানটিতে চলে যায় । যদি এটি এর মাধ্যমে সমস্ত মানের মাধ্যমে আসে তবে তা তালিকায় অন্তর্ভুক্ত ।0nnkk1n^kk1kk0nn

অন্যদিকে, সেখানে একটি মান যদি kসঙ্গে সর্বাধিক দুটি 1যে 'এই ধরনের গুলি n^kযৌগিক না হয়, তাহলে nতালিকায় অন্তর্ভুক্ত করা হয় না।


2

পার্ল 6 , 87 85 বাইট

{grep {!grep {$_%all 2..^$_},($_ X+^grep {.base(2)~~m:g/1/ <3},^(2+<.log(2)))},2..$_}

ইনপুট সংখ্যার চেয়ে কম বা সমান এমন সমস্ত নম্বর প্রদান করে।

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

প্রতিটি সংখ্যার জন্য এন ইনপুট 2 থেকে, এটা নিম্নলিখিত আছে:

  1. ^ (2 + <। লগ (2))

    N এর চেয়ে একই বা সংক্ষিপ্ত বিট দৈর্ঘ্যযুক্ত সমস্ত অ-নেতিবাচক পূর্ণসংখ্যার উত্পন্ন করে ।

  2. গ্রেপ {.বেস (2) ~~ এম: জি / 1 / <3},

    এই তালিকা থেকে তিনটি বিটের চেয়ে কম সেট রয়েছে এমন একটি সংখ্যক ফিল্টার করুন (একটি রেজেক্স ব্যবহার করে)।

  3. X _ এক্স + ^

    XOR যাও এর এন ঐ সংখ্যার প্রতিটি সঙ্গে, সব বৈধ "পরিব্যক্তি" ফলনশীল এন

  4. ! গ্রেপ {$ _% সমস্ত 2 .. ^ $ _}

    কেবলমাত্র n কে আউটপুট তালিকার অংশ হতে দেয় যদি কোনও রূপান্তরগুলি অ-সংমিশ্রিত না হয় (প্রতিটি রূপান্তর এক্স মডুলোর সাথে 2 এবং x -1 এর মধ্যে সংখ্যার সমস্ত সংযোগ গ্রহণ করে পরীক্ষা করা হয় )।


2

গণিত, 115 বাইট

1 মার্টিনএেন্ডারকে ধন্যবাদ 4 বাইট সংরক্ষণ করা হয়েছে

Cases[4~Range~#,x_/;And@@CompositeQ[Fold[#+##&]/@Select[{0,1}~Tuples~BitLength@x,Tr@Abs[#-x~IntegerDigits~2]<3&]]]&

(* or *)

(s=Select)[4~Range~#,xAnd@@CompositeQ[Fold[#+##&]/@s[{0,1}~Tuples~BitLength@x,Tr@Abs[#-x~IntegerDigits~2]<3&]]]&

খুব অকার্যকর কারণ এটি 2 ^ সিল (lg (n)) পর্যন্ত সমস্ত সংখ্যা উত্পন্ন করে।

দ্বিতীয় কোডটি ইউ + এফ 4 এ 1 ব্যবহার করে ( Functionফাংশন)


1

Floroid , 95 109 বাইট

Bj:[n KnIw(j)Fp(Cao(hm("".y(k)))Mhm("".y(k))>1KkIcd("10"*Z(hi(n)),Z(hi(n)))FT(a!=b Ka,bIq(hi(n),"".y(k)))<3)]

অবধি বিট ফ্লিপ-প্রতিরোধী সংখ্যার একটি তালিকা প্রদান করে input - 1। পাশাপাশি বাজে পরিস্থিতি (0 এবং 1) পরিচালনা করে।

ফ্লোরয়েড আমার একটি পুরানো ভাষা, আমি কেবল কয়েকবার ব্যবহার করেছি। এটি দীর্ঘ সময়ের জন্য স্পর্শ করেনি, সুতরাং প্রোগ্রামটির আকার।

নিম্নলিখিত পাইথন কোডে অনুবাদ করে, যা আমি মনে করি পুনরাবৃত্তির সাথে হ্রাস করা যেতে পারে।

lambda j:[n for n in  range(j) if  all( not  functions.isPrime( functions.fromBinStr("".join(k))) and  functions.fromBinStr("".join(k))>1for k in  functions.combinations_with_replacement("10"*len( functions.pureBin(n)),len( functions.pureBin(n))) if sum (a!=b for a,b in  zip( functions.pureBin(n),"".join(k)))<3)]

এখানে ব্যবহৃত প্রতিটি ফাংশন ফ্লোরিয়েডে পূর্বনির্ধারিত। এই পৃষ্ঠাতে সমস্ত কার্য এবং তাদের সংজ্ঞা রয়েছে।


ঠিক যেমন একটি দ্রষ্টব্য: কিছু নম্বর আছে (0 এবং 1) যা প্রাথমিক নয়, তবে তারা সংমিশ্রণও নয়। কয়েকটি সমাধানের কারণেই সংশোধন করতে হয়েছে; আমি সন্দেহ করি এটিও করবে will

@ ais523 আমি আসলে সে সম্পর্কে পড়েছি। এই ধরনের জন্য এখনও কোন পরিচিত পরীক্ষা আছে? যাইহোক, আমি আমার সংশোধন করব, যেহেতু এটি (সম্ভবত) এতেও প্রবণ, ধন্যবাদ!
Yytsi

@ টুকাএক্স: 131136 এর মধ্যে কেবলমাত্র একমাত্র অ-সংমিশ্রিত মান রয়েছে যা দুটি বিটফ্ল্যাপের মাধ্যমে পৌঁছানো যায় (এবং 0 টি প্রাথমিক নয়)। এটি খুঁজে পাওয়ার জন্য জোনাথন অ্যালানকে ধন্যবাদ।

1

এমএটিএল , 30 28 27 26 বাইট

:GBnW:qtB!s3<)!Z~tZpw~+a~f

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

সমস্ত বিটলিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা (এবং সহ) এন পর্যন্ত আউটপুট করে। উভয় জেলি সমাধান থেকে ধারণাগুলি ব্যবহার করে - কেবল 0 কে সমস্যাযুক্ত অ-প্রধানমন্ত্রী হিসাবে বিবেচনা করে; এবং প্রথমে 2 দূরত্বের মধ্যে সংখ্যার একটি তালিকা তৈরি করে, তার পরে একটি জোর লাগবে।

লুপিং (30 বাইট) দ্বারা বিকল্প সমাধান:

:"@BnW:qt@Z~B!s3<)Zp1M~ha~?@D]

সমস্ত বিটলিপ-প্রতিরোধী সংমিশ্রণ সংখ্যা (এবং সহ) এন পর্যন্ত আউটপুট করে।


0

সিজেম , 34 33 বাইট

ri{_2b,,2\f#_m*::|0+f^:mp:+!},2>p

সমস্ত বিটলিপ-প্রতিরোধী কম্পোজিটগুলি n এর চেয়ে কম কম গণনা করে ।

জোনাথন অ্যালানের মতো আমিও নিশ্চিত নই যে 0 বিটফ্লিপগুলি পরীক্ষা করা আসলেই প্রয়োজন কিনা। যদি এটি সক্রিয় হয় যে কোনও মৌলিক সংখ্যার সমস্ত বিটফ্লিপগুলি মিশ্র সংখ্যার ফলস্বরূপ হয় না, তবে 0+তা মুছে ফেলা যাবে।

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

ব্যাখ্যা

ri                                 Take an integer from input (n)
  {                                Filter out all numbers in the range 0...n-1 for which
                                    the following block is false
   _                                 Duplicate the number
    2b,                              Convert to binary, get the length
       ,                             Range from 0 to length-1
        2\f#                         Map each number in that range as a power of 2
                                      results in all powers of 2 less than or equal to n
            _m*                      Cartesian product with itself
               ::|                   Reduce each Cartesian pair with btiwse OR
                                      results in all numbers that have 1-2 1 bits in binary
                  0+                 Add 0 to that list
                    f^               Bitwise XOR the number we're checking with each of these
                                      This computes all the bitflips
                      :mp            Map each result to 0 if it's prime, 1 if it's composite
                         :+!         Take the sum of the list, check if it's 0
                                      If it is, then none of the results were prime
                            },     (end of filter block)
                              2>   Discard the first 2 numbers, since 0 and 1 always pass
                                p  Print the list nicely

0

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

সংশোধনের জন্য জোনাথন অ্যালানকে ধন্যবাদ।

q:Q"@BtnFTZ^=~!s3<fqt2>)Zp~?@

এই নেয় এন এবং আপ সব bitflip-প্রতিরোধী যৌগিক সংখ্যা আউটপুট এন

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

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

q:Q       % Input n implicitly. Push range [2 3 ... n]
"         % For each k in [2 3 ... n]
  @       %   Push k
  B       %   Convert to binary. Gives a row vector of zeros and ones, say v
  tn      %   Duplicate. Number of elements, say m
  FT      %   Push [0 1]
  Z^      %   Cartesian power of [0 1] raised to m. This gives a matrix,
          %   where each row is a binary number of length m
  =~      %   Compare with v, with broadcast
  !s      %   Sum of each row. Gives a row vector. This is the number of
          %   bit flips
  3<      %   True for numbers that are less than 3 bit flips away from k
  fq      %   Find their indices and subtract 1 to convert to decimal form.
          %   This gives a vector of numbers that are less than 3 bit flips
          %   away from k
  t2>)    %   Remove 0 or 1
  Zp~     %   Test each entry for non-primeness
?         % If all entries are true
  @       %   Push k
          % End (implicit)
          % Display stack (implicit)

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