ডান এবং tfeL ট্র্যাঙ্কেটেবল প্রাইমস


11

একজন ডান-truncatable মৌলিক একটি মৌলিক যেখানে প্রত্যেক উপসর্গ একটি মৌলিক (বেস 10) হয়। একটি বাম-truncatable প্রধানমন্ত্রী ঠিক বিপরীত, যেখানে প্রত্যেক পোস্টসাফিক্স একটি মৌলিক হল (মৌলিক যে 0 দিয়ে শুরু অনুমতি দেওয়া হয় না)। এই উভয় ক্রমই সীমাবদ্ধ (এখানে কেবলমাত্র 83 টি ডান-ট্রানক্যাটেবল রয়েছে, সেখানে 4260 বাম-ট্রানকেটযোগ্য রয়েছে)।

আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা একক সংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং n ম ডান-ট্রানকেটেবল প্রাইম তৈরি করে। যাইহোক, প্রোগ্রামটি পিছনের দিকে সাজানো পড়ার পরে , এটি n তম বাম-কাটানোযোগ্য প্রধানমন্ত্রী তৈরি করা উচিত ।

কোনও প্রোগ্রামকে পিছনের দিকে সাজানোর জন্য, আমরা প্রোগ্রামটিকে শব্দগুলিতে বিভক্ত করি, তারপরে শব্দের ক্রমটি বিপরীত করি। একটি শব্দে বহু সংখ্যক অক্ষর থাকতে পারে।

উদাহরণস্বরূপ, নিম্নলিখিতটি যদি আপনার প্রোগ্রাম ছিল:

hello world
1234567890

নিম্নলিখিত সমস্তগুলি পশ্চাদমুখে ব্যবস্থা হিসাবে যথাযথভাবে অনুমতি দেওয়া হবে:

প্রতিটি চরিত্রের উপর বিভক্ত:

0987654321
dlrow olleh

হোয়াইটস্পেসে বিভক্ত করা:

1234567890
world hello

নির্বিচারে বিভক্ত করা (স্বচ্ছতার জন্য পাইপ যুক্ত করা হয়েছে):

hel|lo w|orld
1|23456|7|8|90

908723456orld
1lo whel

আপনার প্রোগ্রামটি পিছনের দিকে সাজানোর সময়, সমস্ত শ্বেতস্থান অবশ্যই অন্য কোনও চরিত্রের মতোই বিবেচনা করা উচিত এবং বিপরীত হতে হবে।

ফরোয়ার্ড পরীক্ষার ইনপুট:

1:  2
2:  3
21: 379
60: 239933
83: 73939133

পিছনের পরীক্ষার ইনপুট:

1:    2
2:    3
39:   647
187:  29173
4260: 357686312646216567629137

প্রোগ্রামগুলি একটি যুক্তিসঙ্গত সময়ে চালাতে সক্ষম হওয়া উচিত (এক মিনিটেরও কম)

এটি একটি , সুতরাং সবচেয়ে কম বাইটস সহ প্রোগ্রামটি জিতেছে!


কোন। পরমাণু পর lo wহয় orld\n1। নিউলাইনটি পরমাণুর সমাপ্তি করে না
— নাথান মেরিল

আহ, ধন্যবাদ এখন বুঝতে পেরেছি. বিভ্রান্তি এড়াতে আমার আগের দুটি মন্তব্য মুছে ফেলা হচ্ছে
— লুইস মেন্ডো

উত্তর:


6

জেলি , 26 23 বাইট

অগ্রবর্তী

Ѷp9¶7ÆR2ĿV€$ÆPÐf$ÐĿFị@

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

শব্দ

Ñ p 9 7ÆR2ĿV€$ÆPÐf$ÐĿFị@

অনগ্রসর

7ÆR2ĿV€$ÆPÐf$ÐĿFị@¶9p¶Ñ

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

শব্দ

7ÆR2ĿV€$ÆPÐf$ÐĿFị@ 9 p Ñ

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

সমস্ত জেলি প্রোগ্রামগুলিতে লিঙ্কগুলি থাকে (জেলি এর কাজগুলি গ্রহণ করে), যা লাইনফিড বা পাইলক্রো দ্বারা পৃথক করা হয় ( )। তার মধ্যে শেষটি মূল লিঙ্ক ; প্রোগ্রামটি চালিত হলে এটি স্বয়ংক্রিয়ভাবে বলা হয়।

ফরোয়ার্ড প্রোগ্রাম নিম্নলিখিত হিসাবে কাজ করে।

Ñ                   Helper link. Unused.


p9                  Helper link. Take the Cartesian product with [1, ..., 9].


7ÆR2ĿV€$ÆPÐf$ÐĿFị@  Main link. Argument: n

7ÆR                 Yield all primes up to 7.
             ÐĿ     
            $ÐĿ     Combine the two quicklinks to the left into a monadic chain,
                    and call it repeatedly until the results are no longer unique.
                    Return the array of all intermediate results.
       $              Combine the two links to the left into a monadic chain.
   2Ŀ               Call the helper link on line 2.
     Ṿ€                 Eval each array in the product. This casts to string
                        before evaluating, thus concatenating both numbers.
        ÆPÐf        Filter by primality; keep only primes.
               F    Flatten the resulting array.
                ị@  Retrieve the element at index n.

পিছনের প্রোগ্রামটি প্রায় একই রকম করে; দুটি মাত্র পার্থক্য আছে।

  • মূল লিঙ্কটি এখন Ñ, যা কেবল তার নীচের লিঙ্কটিকে (চারপাশে মোড়ানো), অর্থাৎ, ফরওয়ার্ড প্রোগ্রামের মূল লিঙ্কটি বলে।

  • 9pপরিবর্তে p9বিপরীত কার্তেসিয়ান পণ্য ফিরে।


4

পাইথন 2, 143 139 বাইট

I=1
a={2}
def f(s):
 for d in'123456789':u=d[I:]+s+d*I;z=int(u);z+=z<3;z%91>0<2==pow(2,z,z)>a.add(z)<f(u)
f('')
lambda n:sorted(a)[~-n]
I=0

পাঁচটি অংশ নিয়ে গঠিত:

  1. I=1
  2. একটি নতুন লাইন
  3. a={2}…[~-n]
  4. একটি নতুন লাইন
  5. I=0

সুতরাং বিপরীতমুখী হ'ল মান হ'ল ফ্লিপিং I।

ব্যাখ্যা

ফাংশনটি fবৈশ্বিক মানের উপর নির্ভর করে বাম-কাণ্ডযোগ্য প্রাইমস (এলটিপি) বা ডান-ট্রানক্যাটেবল প্রাইমস (আরটিপি) এর জন্য পুনরাবৃত্ত অনুসন্ধান করবে I। এই মানগুলি সেটটিতে যুক্ত হয় a। তারপরে, একমাসে lambda n:sorted(a)[~-n]ফেরত দেয় n।

আসুন একটি সংজ্ঞায়িত পাতার যেমন হয় একটি LTP, একটি RTP, কিছু নন-জিরো অঙ্ক + একটি LTP, অথবা একটি RTP + + কিছু নন-জিরো অঙ্ক। এগুলি এমন সমস্ত মান যা fকখনই আদিমতার জন্য যাচাই করতে চাইতে পারে।

আমি একটি ফার্মেট সিউডোপ্রাইম পরীক্ষা ডিজাইন করেছি যা সমস্ত পাতার জন্য কাজ করে:

      

(63973 একটি কারমাইকেল নম্বর ))

যদি এই পরীক্ষাটি সত্য হয়, তবে zসেটটিতে যুক্ত করা aউচিত এবং আমাদের পুনরাবৃত্তি করা উচিত str(z)। কোডটির দায়িত্বশীল বিটটি হ'ল:

z+=z<3;z%91>0<2==pow(2,z,z)>a.add(z)<f(u)

প্রথমত, আমরা মামলাটি মোকাবেলা করতে চাই z == 2। আমরা এখানে কেবল ডডিং করে এবং 2প্রাথমিকভাবে সংজ্ঞায়িত করার পরে হার্ড-কোডিংয়ের মাধ্যমে এটি করি a! (সম্পাদনা করুন: এবং যদি আমরা ধরাও হয় তবে ক্ষতিকারক কিছুই হয় না z == 1)) সুতরাং আমরা z ≥ 3এখন ধরে নিতে পারি ।

আমি কিছু "এবং" গুলি একটি শর্ট সার্কিটের শৃঙ্খলাবদ্ধ তুলনায় অনুবাদ করেছি: প্রথম তিনটি তুলনা আগে সফল হতে হবে a.add(z)এবং f(u)কখনও মূল্যায়ন করা হয়। এখানে তাদের সমস্ত ভূমিকা রয়েছে:

  1. z%91>0আমাদের প্রথম শর্তটি এনকোড করে। (63৩৯73৩টি ৯১ দ্বারা বিভাজ্য, যা নিজেই একটি পাতা নয়, তাই আমরা এটিরূপে এটি স্বীকৃত করব))
  2. 0<2সর্বদা সত্য, তবে শৃঙ্খলা তুলনায় ছোট and।
  3. 2==pow(2,z,z) আমাদের দ্বিতীয় শর্তটি এনকোড করে।
  4. pow(2,z,z)>a.add(z)সংযোজনটি ট্রিগার করে এবং সর্বদা সত্য, যেহেতু set.addপ্রত্যাবর্তন হয় Noneএবং পূর্ণসংখ্যা সবসময় এর চেয়ে বেশি হয় None।
  5. a.add(z)<f(u)পুনরাবৃত্তি ট্রিগার। এর সত্য মূল্য গুরুত্বহীন।

প্রাপ্তি স্বীকার

  • ডেনিস চারটি বাইট ( u=[d+s,s+d][I]→ u=d[I:]+s+d*I; z==2→ z<3এবং Mod 91 টি কৌশল) সংরক্ষণ করেছিলেন। ধন্যবাদ!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.