এটা কি প্রধান? ডাব্লু / ও গণিত [বন্ধ]


14

যে কোনও ভাষায় একটি প্রোগ্রাম বা ফাংশন লিখুন যা জানায় যে ইনপুটটি প্রাইম সংখ্যা কিনা।

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

সংখ্যার সীমা কি? এটা কি নেতিবাচক হতে পারে? জিরো? এটি একটি দশমিক পয়েন্ট থাকতে পারে?
জাস্টিন

যদি এর বোনাস পয়েন্ট থাকে তবে এটি কোড-গল্ফ নয়
পিটার টেলর

ইনপুটটিতে সীমা নির্দিষ্ট করতে "প্রাকৃতিক" যুক্ত হয়েছে।
ওয়ালি

আমি কিছু উন্মত্ত স্পষ্ট স্ট্রিং ম্যানিপুলেশনের সাথে অবাক হওয়ার আশা করছিলাম (আমি ব্যক্তিগতভাবে কোডটি "হ্রাস" তে স্ট্রিং লিখার কথা ভাবছিলাম যাতে আমি লুপ করতে পারি - এবং আমি স্ট্রিং দীর্ঘ বিভাজন এবং পুনরাবৃত্ত স্ট্রিং বিয়োগের মধ্যে ছিঁড়ে গিয়েছিলাম ...) পরিবর্তে আমি চমত্কার যে দুর্দান্ত শীতল রেগেক্স unary প্রাইম ম্যাচারের সাথে! আমি আরও বেশি দুর্দান্ত জিনিস পেয়েছি কিনা তা দেখার জন্য আমাকে আবার প্রশ্ন জিজ্ঞাসা করতে হবে রেইগেক্সকে অস্বীকার করে? তবে আমি মনে করি না যে কোনও কিছুই সেই রেজেক্সের সংকোচনের কাছাকাছি আসতে সক্ষম হবে।
ওয়ালি

"আরও বিস্ময়কর জিনিস" পেতে আপনি সম্ভবত এটি জনপ্রিয়তা-প্রতিযোগিতায় পরিণত করার চেষ্টা করতে পারেন । প্রশ্ন নিজেই পরিবর্তন করা যদিও সাধারণত তাত্পর্যপূর্ণ হয়। এবং আমি নিশ্চিত নই যে আপনার নতুন প্রশ্ন করা বা কিছু পরিবর্তন করা উচিত কারণ কেউ এমন কিছু নিয়ে এসেছিল যা আপনি ভাবেননি - আমি মনে করি এটি এখানে প্রায়শই ঘটে থাকে। এছাড়াও, নিয়ম নমন খেলাধুলা :) অংশ
daniero

উত্তর:


7

রুবি, 64 - 10 = 54

puts ('1
'..gets).map{?1}*''=~/^1?$|^(11+?)\1+$/?'Not!!': :Prime

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


"মানচিত্র in? 1}" "1" কি একটি ফিক্সনাম? - যদি তা হয় তবে আপনাকে এটি "মানচিত্রে ('1') রূপান্তর করতে হবে? আমি অভিব্যক্তিতে কোনও ডকুমেন্টেশন খুঁজে পাচ্ছি না? 1 রুবীর পুরানো সংস্করণগুলিতে এটি ASCII কোডগুলি ফেরত পাঠিয়েছে এবং এখন এটি একটি স্ট্রিং দেয় ।
ওয়ালি

? 1 '1' এর মতোই, এটি 1-বর্ণের স্ট্রিং আক্ষরিক। আমি 1 এর সমস্ত দৃষ্টান্ত প্রতিস্থাপন করতে পারি তবে অন্য কোনও চরিত্রের সাথে প্রথমটি।
হিস্টোক্র্যাট

ঠিক আছে - আমি ঠিক এই নির্মাণটি কোথাও ভালভাবে বর্ণিত পাই না!
ওয়ালি

আমি এটিকে "বিজয়ী" হিসাবে বেছে নিয়েছি কারণ এটি গণিতের একটি ইঙ্গিতও এড়াতে পারে না।
ওয়ালি

3
কোন টুপি অবীগল নেই? লজ্জা হয় না তোমার. এটি 1998 এর পার্ল সমাধানের একটি সরাসরি বন্দর: ক্যাটোনমেট.नेट
স্পার-

16

রুবি: 52 - 10 = 42

সেই বিখ্যাত প্রাইম-ম্যাচিং রেজেক্সের একটি প্রকরণ ব্যবহার করে।

puts ?_*gets.to_i=~/^(_|(__+?)\2+)$/?"Not!!":"Prime"

কেবল পরিষ্কার করে বলা: ?_*gets.to_iএকটি স্ট্রিং অপারেশন যা "_"নিজের সাথে n বার সংযোজন করে , যেখানে এন ইনপুট নম্বর। আমি দেখতে পাচ্ছি যে কোনও স্ট্রিং দৈর্ঘ্যের তুলনা করা হয় না, যাতে এটি 10 ​​অক্ষরের বোনাস মাপদণ্ডকে সন্তুষ্ট করে।


1
আমি রুবির সাথে তেমন পরিচিত নই, তাই আমি ভুল হলে আমাকে সংশোধন করি, তবে "to_i" স্ট্রিংটিকে পূর্ণসংখ্যায় রূপান্তর করে না? এমন নয় যে আমি আনারিতে উজ্জ্বল প্রাইম চেকারকে পছন্দ করি না ...
ওয়ালি

1
@Wally আমি মনে করি না যে "রূপান্তর" সঠিক শব্দ নয়, তবে পদ্ধতিটি হ্যাঁ, প্রত্যাবর্তন করে int তবুও, আমি নিম্নলিখিতগুলির কোনও ব্যবহার করি না Arithmetic operators, bit-wise operators, numeric variables and constants, এবং আপনি কোনও পদ্ধতিটিকে কল হিসাবে সত্যই শ্রেণিবদ্ধ করতে পারবেন না "math-stuff" in general..?
ডানিরো

@ ডানিরো যুক্তিসঙ্গত মনে হচ্ছে - সম্ভবত অনুমানের ঠিক প্রান্তে।
ওয়ালি

3

পার্ল 52-10 = 42

বাস্তবায়ন

print((('-'x$ARGV[0])=~/^.$|^(..+?)\1+$/)?Not:Prime)

ডেমো

$ seq 1 10|xargs -I{} bash -c "echo -n '{} '  && perl Prime.pl {} && echo"
1 Not
2 Prime
3 Prime
4 Not
5 Prime
6 Not
7 Prime
8 Not
9 Not
10 Not

4
1 আসলেই প্রধান নয়।
এলেক্সেনাইড

একটি অঙ্কের অ্যারে সূচক ব্যবহার করে - তাই অনুমানের প্রান্তে।
ওয়ালি

ব্যবহার করুন popপরিবর্তে $ARGV[0],, 4 অক্ষর সংরক্ষণ সংখ্যাসূচক অ্যারের সূচক অপসারণ
ভিড়

1

ECMAScript 6, 159 - 10 = 149

রেগেক্সের জন্য কোনও টাস্কের মতো মনে হচ্ছে। I / O যথারীতি prompt/ alertযথারীতি

for(s=prompt(u=""); /[^0]/.test(s); )
  s=s.replace(/(.)(0*)$/,(_,d,t)=>u+="x"," 012345678"[d]+t.replace(/0/g,"9"))
alert(/^((xx+)\2+|x?)$/.test(u)?"Not!!":"Prime")

যখন লুপ দশমিক সংখ্যা হ্রাস করে প্রতিটি পুনরাবৃত্তি খাঁটিভাবে রেজেক্স দ্বারা। চূড়ান্ত রেজেক্সটি একটি সংখ্যক এক্স এর সমন্বিত স্ট্রিংটির সাথে মেলে, প্রথমে একটি ফ্যাক্টরের সাথে মিল রেখে, তারপরে অন্য স্ট্রিংটির বাকি অংশগুলির জন্য প্রথম ফ্যাক্টরটির পুনরাবৃত্তি করে another


আমি স্ট্রিং হ্রাস ফাংশন পছন্দ করি - পরিষ্কার এবং সংক্ষিপ্ত।
ওয়ালি

1

জাভাস্ক্রিপ্ট 266

function N(a){function b(a){return P.every(function(b){if(n=b,i=a.length,j=b.length,j>i) return;if(j==i) return 1;while(n.length<i)n+=b;return n.length!=i})}if(q=A,A!=a)for(;q.length.toString()!=a;)b(q)&&P.push(q),q+=A;console.log(b(q)?"Prime":"Not!!")}A="0",P=[A+A]

এন নামে একটি ফাংশন তৈরি করে যা পছন্দসই ফলাফল মুদ্রণ করবে। আনমিনিফাইড ভার্সনটি এর মতো দেখাচ্ছে। আমি কিছু ভেরিয়েবল পরিষ্কার করতে একটি হাত মিনিফাই করেছিলাম এবং তারপরে uglify এর মাধ্যমে দৌড়েছিলাম এবং তারপরে আবার হাতটি মিনিফাইন্ড করা হয়েছে।

// A a string of "0" for using to generate long strings
// P is the store for all known primes
A="0", P=[A+A];
function N(val) {
  function _isPrime(str) {
    // go through all the known primes and return true
    // if we don't match on any of them
    return P.every(function(prime) {
      // prime is some known string whose length is a prime number
      tsr = prime, strlen = str.length, primelen = prime.length;
      // if the string we're checking has fewer chars than
      // this then it's not a prime
      if(strlen < primelen) return 0;
      // if the string we're checking has the same number of chars
      // as the the prime we're checking against then it is a prime
      if(primelen == strlen) return 1;
      // Keep incrementing our temporary string with the prime we're
      // checking. we'll break out of the loop once the temporary string
      // is greater than or equal to the string we're testing
      while(tsr.length < strlen) {
        tsr += prime;
      }
      return !(tsr.length == strlen)
    });
  }
  // start with a string of one unit
  nstr = A
  if(A!=val) {
    // keep incrementing the string so that we can compile a list
    // of known primes smaller than this value
    while(nstr.length.toString() !== val) {
      if(_isPrime(nstr)) {
        P.push(nstr);
      }
      nstr += A;
    }
  }
  console.log(_isPrime(nstr) ? "Prime" : "Not!!");
}

এই স্নিপেট ব্যবহার করে এটি পরীক্ষিত:

for(var X=0;X<10;X++) {
  console.log('checking: ' + X);
  N(X.toString());
}

1
আমি নিশ্চিত যে আমি এটি কীভাবে কাজ করে তা দেখতে পাচ্ছি না তবে আমি একটি সংখ্যার পরিবর্তনশীল (i) এবং একটি গণিত অপারেটর (i ++) দেখতে পাচ্ছি।
ওয়ালি

ওহ, বুঝতে পারি নি যে আমি এর মতো লুপের জন্য কোনও কাজ করতে পারি না .. আজ রাতে এটিকে আবার লিখব।
সুগেন্দ্রান

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

আমি কোডটি আপডেট করেছি, এটি আসলে অক্ষরের সংখ্যা কিছুটা কমিয়ে দিয়েছে :)
সুনাগ্রেডান

কুল। এটিকে রেজেক্সের মতো একই ধারণা বলে মনে হচ্ছে তবে আরও দক্ষ এবং স্পষ্টভাবে প্রকৃত যুক্তি দেখানো হচ্ছে।
ওয়ালি

0

বাশ 66 - 10 = 56

বাস্তবায়ন

[[ -z `printf %$1s|grep -P "^(..+?)\1+$"` ]]&&echo Prime||echo Not

ডেমো

$ seq 1 10|xargs -I{} bash -c "echo -n '{} '  && ./Prime.sh {}"
1 Prime
2 Prime
3 Prime
4 Not
5 Prime
6 Not
7 Prime
8 Not
9 Not
10 Not

উপরে হিসাবে, 1 প্রধান নয়।
ওয়ালি

0

পাইথন 3, 109-10 = 89

print(['Not','Prime'][(lambda i:not any(' '*i==(' '*u)*v for u in range(i)for v in range(i)))(int(input()])

স্ট্রিং দৈর্ঘ্যের তুলনা না করে স্ট্রিং অন্তর্ভুক্তি। সদৃশ থেকে পোস্ট ক্রস নির্ধারণ করুন অঙ্কটি গাণিতিক ব্যবহার না করেই যদি কোনও সংখ্যা প্রধান হয়

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