ডান এবং 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==2z<3এবং Mod 91 টি কৌশল) সংরক্ষণ করেছিলেন। ধন্যবাদ!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.