Negativeণাত্মক অর্ডার পূর্ণসংখ্যার চ্যালেঞ্জ, কিন্তু এটি প্রাইম টাইম!


12

আমি এই প্রশ্নের কথা বলছি , আপনি যদি কিছুটা বিভ্রান্ত হন তবে এটি একবার দেখুন।

মূল কাজ

আপনার টাস্ক হ্রাস অর্ডারে সংক্ষিপ্ত পূর্ণসংখ্যার আউটপুট তৈরি করা, তবে আপনি যতবার আঘাত করবেন ততবার পূর্ণসংখ্যাকে বাড়িয়ে তুলবেন 1 (এই প্রশ্নের জন্য, 1 টি একটি প্রাথমিক সংখ্যা হিসাবে বিবেচিত হবে) । এটি প্রথম প্রশ্নের চেয়ে আলাদা বলে মনে হচ্ছে না, তবে এখানে জটিল অংশটি এসেছে: সমস্ত আউটপুটযুক্ত সংখ্যা কেবল প্রাইম হতে পারে । এগুলি একসাথে ফাঁকা স্থান বা নিউলাইন ছাড়াই একক স্ট্রিংয়ে যুক্ত হবে। আপনার ইনপুটটিও একটি প্রাথমিক সংখ্যা হবে

উদাহরণ:

1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321

ইনপুট

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

আউটপুট

ফলস্বরূপ সংখ্যাটি আপনাকে আউটপুট দিতে হবে। আপনি এই সংখ্যাটি গণনা করেই পেতে পারেন, কেবল সংখ্যাটি যদি এটি প্রাথমিক হয় তবে তা গণনা করুন, তারপরে সমস্ত ফলাফল এক সাথে সংযুক্ত করুন। শেষ সংখ্যা "সারি" (উদাঃ 7, 5, 3, 2, 1) পুরোপুরি মুদ্রণ করতে হবে। যতক্ষণ পঠনযোগ্য ততক্ষণ আউটপুট কোনও পরিমাণ (সংখ্যা, স্ট্রিং, গ্রাফিকাল) হতে পারে। আপনার পরীক্ষার কেসগুলি পরীক্ষা করার জন্য একই রেজেক্স প্যাটার্ন প্রয়োগ হয়:

^(\D*(\d)+\D*|)$

যদি আপনার আউটপুট এই প্যাটার্নটির সাথে মেলে না, তবে আপনার কোডটি অবৈধ।

বিধি

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

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

Input: -2, 0
Output: Any, or none (number isn't positive)

Input: 9
Output: Any, or none (number isn't prime)

Input: 1
Output: 1

Input: 7
Output: 121321532175321

Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321

বিজয়ী

এটি , তাই বাইটে ন্যূনতম দৈর্ঘ্যের কোডটির লেখক জয়!


8
আমি চ্যালেঞ্জটি পরিবর্তন করার পরামর্শ দেব না, তবে আমি 1সংজ্ঞা অনুসারে প্রধান মনে করি না ।
এরিক আউটগলফার

3
১. একটি পরীক্ষার 1কেসটি সরাসরি অনুমানের সাথে বিরোধী, যা " আশ্বাস দেয় " যে ইনপুট সংখ্যাটি প্রধান হবে। ২. আউটপুট স্পিকে একাধিক দ্বন্দ্ব এবং অস্পষ্টতা রয়েছে বলে মনে হচ্ছে। " শেষ সংখ্যা" সারি "(যেমন 7, 5, 3, 2, 1) পুরোপুরি মুদ্রণ করতে হবে " - তাই অন্যরা কি তাই না? " আপনার পরীক্ষার কেসগুলি পরীক্ষা করার জন্য একই রেজেক্স প্যাটার্নটি প্রযোজ্য ", তবে " আউটপুটটি কেবলমাত্র একটি সম্পূর্ণ সংযুক্ত নম্বর হতে পারে, তাই কোনও কিছুর দ্বারা বিভক্ত হয় না " যা রেজেক্সের বিরোধিতা করে। কিন্তু রেইজেক্স যাইহোক পরিষ্কারভাবে ডজ্বল কারণ এটি খালি স্ট্রিংকে অনুমতি দেয় এবং এটিরূপ কোনও ইনপুট নেই।
পিটার টেলর

1
1. " একটি একক পেছনের নতুন লাইনের অনুমতি দেওয়া হয়েছে the" রিজেক্স প্যাটার্নের সাথে রিডানড্যান্ট / অসামঞ্জস্যপূর্ণ যা কোনও সংখ্যক পিছনে অক্ষরকে অনুমতি দেয় । ২. পরবর্তীতে আপনি একটি সংখ্যার আউটপুট দিতে বলছেন বলে " আপনার কাজটি পূর্ণ সংখ্যার আউটপুট আউট করা " এর পরিচয় বাক্যটি বিভ্রান্তিকর। ৩. ক্রমটির পুরো ব্যাখ্যা এবং আউটপুটটি বিভ্রান্তিকর - লোকেরা মূলত উদাহরণগুলি (সিক্যুয়েন্স তালিকা এবং পরীক্ষার কেস) অধ্যয়ন করে যা বোঝাতে চান তা রিভার্স-ইঞ্জিনিয়ারকে করতে হয়। সর্বশেষ চ্যালেঞ্জটিতেও এই সমস্যাগুলি ছিল এবং আমি সেখানে তাদের একটি প্রস্তাবিত সম্পাদনায় সম্বোধন করেছি, যা আপনি প্রত্যাখ্যান করেছেন ... :(
স্মিল করে

5
নির্বিচারে 1 জনকে প্রধান করে তোলার কী দরকার?
Xenderhall

1
Negative
ণাত্মক

উত্তর:


5

জেলি , 9 বাইট

ÆR1;;\UFV

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

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

ÆR1;;\UFV  Main link. Argument: n

ÆR         Prime range; yield all primes up to n.
  1;       Prepend the "prime" 1.
    ;\     Cumulative concatenation; yield all prefixes of the prime range.
      U    Upend; reverse each prefix.
       F   Flatten the resulting 2D array.
        V  Eval. This casts the integer array to string first, thus concatenating
           the integers.

আমি জানি যে আমি যখন জেলিটি অন্যভাবে রাউন্ডের চেয়ে প্রশ্নটি বুঝতে পড়ি তখন গল্ফিং সম্পর্কে শেখার খুব গভীর deep (এটি আসলে একটি বেশ পঠনযোগ্য জেলি প্রোগ্রাম, যেমন তারা যায়; আমার জন্য একমাত্র বিভ্রান্তিমূলক বিষয়টি ছিল Vতালিকার একটি অদ্ভুত বিশেষ ঘটনা ))

5

প্রসেসিং, 161 বাইট

int p(int n){for(int k=1;++k<=sqrt(n);)if(n%k<1)return 0;return 1;}void t(int n){for(int i=1,j;i<=n;i++){if(p(i)<1)continue;for(j=i;j>0;j--)print(p(j)<1?"":j);}}

একটি ফাংশন প্রাথমিকতা পরীক্ষা করে, অন্যটি মুদ্রণ করে। এটিকে কল করেt(7)

Ungolfed

প্রথম ফাংশনটি প্রাথমিকতা পরীক্ষা করে। এটি এর intপরিবর্তে একটি ফেরত দেয় booleanযেহেতু আরও বাইট সংরক্ষণ করা হয়। ( intপরিবর্তে boolean, 0পরিবর্তে false, 1পরিবর্তে true)

int Q103891p(int n){
  for(int k=1;++k<=sqrt(n);)
    if(n%k<1)return 0;
  return 1;
}

দ্বিতীয় ফাংশন স্ট্রিং আউট প্রিন্ট করে। এটি প্রতিটি সংখ্যার মাধ্যমে পুনরাবৃত্তি করে, যদি এটি প্রাইম না হয় তবে পরবর্তী পুনরাবৃত্তিতে যান। যদি এটি প্রধান হয় তবে এটি অন্য- forলুপের অভ্যন্তরে মুদ্রণের দিকে অবিরত থাকবে। আবার, যদি সংখ্যাটি প্রধান হয়, তবে আমরা এটি মুদ্রণ করব, অন্যথায় নয়।

void Q103891(int n){
  for(int i=1,j;i<=n;i++){
    if(p(i)<1)continue;
    for(j=i;j>0;j--)
      print(p(j)<1?"":j);
  }
}

5

জেলি , 12 বাইট

ÆR;@1
ÇÇ€UVV

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

যদি এটি মোটেও না হয়ে 1থাকত তবে আমার কোডটি মাত্র ÆRÆRUVV7 বাইটের জন্য হত ।

বর্ধিত ব্যাখ্যা:

ÇÇ€UVV Main link. Arguments: z.
Ç      Run link1 on z.
 ǀ    Run link1 on z's elements.
   U   Reverse z's elements.
    V  Flatten z.
     V Concatenate z's elements.

ÆR;@1 Link 1. Arguments: z.
ÆR    Range of primes [2..z].
    1 Integer: 1.
  ;@  Concatenate x to y.

আইরিশ লোকটি (ডেনিস নামে ডাকা?) একরকমভাবে আমাকে ছাড়িয়ে গেল ol


4

05 এ বি 1 , 19 বাইট

LDpÏX¸ì€Lí˜ÐXQsp+ÏJ

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

ব্যাখ্যা

L                     # range [1 ... input]
 DpÏ                  # keep only primes
    X¸ì               # prepend a 1
       €L             # map: range [1 ... n]
         í            # reverse each sublist
          ˜           # flatten list to 1D
           Ð          # triplicate
            XQ        # check elements in one copy for equality with 1
              sp      # check elements in one copy for primality
                +     # add the above lists giving a list with true values at indices
                      # comtaining 1 or a prime
                 Ï    # keep only those elements of the unmodified copy of the list
                  J   # join

DpÏবিবৃতি শুনে অবাক । চমৎকার কাজ!
devRicher

2

ব্র্যাচল্যাগ , 17 বাইট

y:{e1|e#p}f@[rcw\

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

এর চেয়ে খাটো হয়ে উঠবে বলে মনে হচ্ছে না ...

ব্যাখ্যা

y                      The list [0, ..., Input]
 :{      }f            Find all...
   e1                     ...elements that are 1 (there is 1)...
     |                    ...or...
      e#p                 ...elements that are prime...
           @[          Take a prefix of the result
             rc        Reverse it and concatenate it into a number
               w       Write to STDOUT
                  \    Backtrack: try another prefix

2

গেমমেকার ল্যাঙ্গুয়েজ, 169 বাইট

প্রধান ফাংশন (68 বাইট)

b=""for(i=1;i<=argument0;i++){c=i while(j)b+=string(p(c--))}return b

ফাংশন পি (46 বাইট)

for(a=0;a<argument0;a++)while q(++b){}return b

ফাংশন Q (55 বাইট)

n=argument0 for(i=2;i<n;i++)if!(n mod i)p=1return p|n=1

ভাল, কেউ জিএমএল ব্যবহার করেছে
ফায়ারকিউজ

@ ফায়ারকিউজ ধন্যবাদ :) আমি এটিকে অনেক ব্যবহার করতাম। এটি আসলে আমি প্রথম প্রোগ্রামিংয়ের ভাষা শিখেছিলাম।
টিমটেক


1

পার্ল 6 , 41 বাইট

{[~] flat [\R,] 1,|grep *.is-prime,2..$_}

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

ব্যাখ্যা:

  • 1, |grep(*.is-prime, 2..$_): 1 এবং প্রাইমস এর সিকোয়েন্স ... (1 2 3 5)
  • [,] ...: কমা অপারেটরের মাধ্যমে ("ভাঁজ") হ্রাস করুন ... (1 2 3 5)
  • [\,] ...: মধ্যবর্তী ফলাফলের সাথে ( ত্রিভুজাকার হ্রাস ) ...((1) (1 2) (1 2 3) (1 2 3 5))
  • [\R,] ...: মেটা অপারেটরকে কমাতে বিপরীত প্রয়োগ করুন ...((1) (2 1) (3 2 1) (5 3 2 1))
  • [~] flat ...: তালিকা নেস্টিং সরান, এবং স্ট্রিং কনক্যাট অপারেটর ভাঁজ ... 1213215321

(এটি পূর্ববর্তী চ্যালেঞ্জের জন্য আমার উত্তরের উপর ভিত্তি করে ))


1

গণিত, 61 বাইট

ToString/@(1<>Prime@Range[Range@PrimePi@#,0,-1]/.Prime@0->1)&

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

এই প্রয়োগটি একই পূর্ববর্তী চ্যালেঞ্জের মার্টিন ইন্ডারের জবাব থেকে কদর্য কৌশল ব্যবহার করে (কে বলে যে এই বৃদ্ধ কুকুরটি নতুন কৌশলগুলি শিখতে পারে না?): <>পূর্ণসংখ্যার নেস্টেড তালিকা সমতল করতে অপব্যবহার করে।

প্রশ্নে নেস্টেড তালিকাটি যথাযথ দৈর্ঘ্যের সাথে (উত্তর দ্বারা প্রদত্ত PrimePi@#সংখ্যাগুলি এবং ইনপুট সহ) যথাযথ দৈর্ঘ্যের সাথে উত্তর হিসাবে অনুরূপ নেস্টেড তালিকা তৈরি করে শুরু হয় ; তারপরে Primeপ্রতিটি উপাদান প্রয়োগ করা হয়। উদাহরণস্বরূপ, ইনপুটটির জন্য 5যা তৃতীয় প্রধান, কোড Range[Range@PrimePi@#,0,-1]ফলন করে {{1,0},{2,1,0},{3,2,1,0}}এবং 1 ম, 2 য় এবং 3 য় প্রাইমগুলি থেকে Primeপ্রতিটি উপাদানকে ফলন করে {{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}যথাক্রমে 2, 3 এবং 5 হয়। আমি গর্বিত বোধ করি যে আমি মার্টিন এেন্ডারের পদ্ধতির আরও ত্রুটি যুক্ত করতে পেরেছি every ম্যাথামেটিকা ​​যতবার লিখেছে অভিযোগ করে Prime[0]

Prime[0]কোনও জিনিস নয়, তবে এটি ঠিক আছে: /.Prime@0->1তাদের সকলকে 1এস-তে পরিণত করে । এবং আমরা 1সামনের দিকে একটিও চাই, তাই আমরা ""মার্টিন ইন্ডারের উত্তরটি সহজভাবে দিয়ে প্রতিস্থাপন করি 1যা আসলে বাইট সংরক্ষণ করে।


0

পিএইচপি, 72 বাইট

for(;$n<$argv[1];print$s=$n.$s)for($i=2;$i>1;)for($i=++$n;--$i&&$n%$i;);

বুদ্ধি চালান -r

ভাঙ্গন

for(;$n<$argv[1];               // loop $n up to argument:
    print$s=$n.$s)                  // 2. prepend $n to $s, print $s
    for($i=2;$i>1;)                 // 1. find next prime: break if $i<2
        for($i=++$n;--$i&&$n%$i;);      // if $n is prime, $i is 1 after loop (0 for $n=1)

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