প্রতিযোগিতা পুরষ্কার


26

চ্যালেঞ্জ:

আপনাকে কেবল একটি সংখ্যা রয়েছে এমন স্ট্রিং দেওয়া হচ্ছে। আপনার কাজটি সর্বনিম্ন সংখ্যার প্রাইমকে আউটপুট করা যা স্ট্রিংটি গঠনের জন্য অবশ্যই সংঘবদ্ধ হতে হবে। যদি এটি অসম্ভব, আউটপুট 0

পরীক্ষার কেস:

ইনপুট -> আউটপুট:

252 -> 3
235 -> 2
92 -> 0
31149 -> 2


নেতৃস্থানীয় জিরো থাকতে পারে?
Zgarb

হ্যাঁ, নেতৃস্থানীয় জিরো থাকতে পারে।
poi830

আমরা কি অঙ্কের একটি তালিকা নিতে পারি?
LegionMammal978

1
শীর্ষস্থানীয় জিরো থাকলে কী হবে?
ডেনিস

উত্তর:


6

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

f=(s,v)=>(p=n=>--n-1?s%n&&p(n):1)(s)||[...s].map((_,i)=>!(n=i&&(a=f(s.slice(0,i)))&&(b=f(s.slice(i)))&&a+b)|n>v?0:v=n)|v

@ নীলকে একটি বাইট সংরক্ষণ করে!

ব্যাখ্যা

ইনপুট হিসাবে একক স্ট্রিং নেয়। প্রাইম চেকিং পদ্ধতির কারণে (পুনরাবৃত্তির পরীক্ষার বিভাগ), নিরাপদে যাচাই করা যেতে পারে এমন সবচেয়ে বড় সংখ্যা 13840। সর্বাধিক কল স্ট্যাকের আকার ছাড়িয়ে যাওয়ার কারণে এর উপরে কয়েকটি নম্বর ব্যর্থ হবে। এটি হ্যান্ডেল করতে পারে এমন প্রতিটি ক্ষেত্রে তাত্ক্ষণিকভাবে শেষ করে।

f=(s,v)=>
  (p=n=>--n-1?s%n&&p(n):1)(s) // if s is prime, return 1
  ||[...s].map((_,i)=>        // else for each index in s, split s into 2
    !(n=i&&                   // v = return value (initialised to undefined)
      (a=f(s.slice(0,i)))&&
      (b=f(s.slice(i)))&&
      a+b
    )|n>v?0:v=n               // if i, a, b and n are all > 0 and !(n > v), v = n
  )|v                         // cast v to an integer and return it

// Test
var testCases = [ "252", "235", "92", "3149", "24747" ];
document.write("<pre>" + testCases.map(c => c + ": " + f(c)).join("\n"));


এটা আমার হয় বা আপনি পরিবর্তন করতে পারেন i?(a=...)&&(b=...)&&a+b:0করতে i&&(a=...)&&(b=...)&&a+b?
নীল

5

এমএটিএল , 26 24 বাইট

0in:"GUtZq@Z^V10ZA=a?x@.

কিছু পরীক্ষার ক্ষেত্রে এটি কয়েক সেকেন্ড সময় নেয়।

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

ব্যাখ্যা

0       % Push 0
in:     % Take input. Generate array [1,2,...,N] where N is input length
"       % For each. In each iteration the number of used primes is increased
  GU    %   Push input. Convert to number
  tZq   %   Duplicate. Array of primes smaller than the input
  @     %   Push number of primes to bes tested in this iteration
  Z^    %   Cartesian power
  V     %   Convert to 2D array. Each row is a combination of primes
  10ZA  %   Convert each row to base 10, disregarding spaces
  =a    %   Do any of the results equal the input number? 
  ?     %   If so
    x   %     Remove the 0 that's at the bottom of the stack
    .   %     Break for each loop
        %   Implicitly end if
        % Implicitly end for each
        % Implicitly display



2

বাশ + কোর্টিলস, 169 158 149 বাইট

c()
{
test $1||echo a
for i in `seq ${#1}`
do factor ${1::$i}|grep -q ': \w*$'&&printf b%s\\n `c ${1:$i}`
done
}
c $1|sort|sed '/a/!d;s/..//;q'|wc -c

আমরা অরিয়াতে গণনা করি, bপ্রতিটি প্রধানের জন্য একটির সাথে একটি লাইন আউটপুট এবং aলাইনের শেষে টার্মিনেটিং (যাতে printfএটির সাথে কাজ করার একটি টোকেন থাকে)।

প্রাথমিকতা পরীক্ষা factor $n | grep -q ': \w*$', যা সংখ্যার ঠিক একটি প্রধান উপাদান আছে কিনা তা নির্ধারণ করে।

আমরা পুনরাবৃত্তভাবে ইনপুট বিভক্ত করি; যদি বাম অর্ধেক প্রাইম হয় তবে আমরা প্রতিটি মানটিতে একটি যোগ করে ডান অর্ধের ফলাফলগুলি ফিল্টার করি। aশূন্য-দৈর্ঘ্যের ইনপুটটির জন্য প্রত্যাবর্তন পুনরাবৃত্তি সমাপ্ত করে।

পরিশেষে, আমরা সমস্ত ফলাফল নিই এবং সংক্ষিপ্ততম অনুসন্ধানের জন্য বাছাই করি ( aসাফল্যের ইঙ্গিত দেওয়ার মতো কোনও বিষয় উপেক্ষা করে); আমাদের দুটি অবশ্যই মুছে ফেলতে হবে ( asertedোকানো এবং নিউলাইনের জন্য), তারপরে ফলাফল দেওয়ার জন্য অক্ষর গণনা করুন।

টেস্ট

$ for i in 252 235 92 31149 111; do echo "$i:"$'\t'"$(./77623.sh $i)"; done
252:    3
235:    2
92:     0
31149:  2
111:    0

আমি 111পরীক্ষাগুলি যুক্ত করেছি 1তা সঠিকভাবে অ-প্রধানমন্ত্রী হিসাবে বিবেচিত হয়।


আমি এই পরামর্শ দিতে যাচ্ছি । আমার বেশিরভাগ পরিবর্তনগুলি সম্ভবত এখন অপ্রচলিত, তবে অন্যদের এখনও কাজ করা উচিত।
ডেনিস

@ ডেনিস - cফাইনাল উত্সাহিত করতে আমি পছন্দ করি 0। যদিও প্রচুর স্টাডারের প্রতি এত আগ্রহী নয়। আপনি যদি চান তবে নিজের উত্তরকে নিজের ভিত্তিতে হিসাবে (সংস্করণ) ব্যবহার করতে আপনাকে স্বাগত জানাই।
টবি স্পিড

2

গণিত, 142 135 বাইট

Min[Length/@Select[Join@@@Permutations/@IntegerPartitions@Length[a=#],And@@PrimeQ@*FromDigits/@a~Internal`PartitionRagged~#&]]/.∞->0&

আপনি দেখতে পাচ্ছেন, ম্যাথমেটিকাকে এই কাজের জন্য তৈরি করা হয়নি। সংখ্যার একটি তালিকা নেয়।


আপনি কি And@@পরিবর্তে ব্যবহার করতে পারেন AllTrue? 4-5 বাইট সংরক্ষণ করা উচিত।
ক্যালকুলেটরফলাইন


উম ... 133-তে ত্রুটি এবং ভুল উত্তর দেয় ... আপনি সমস্ত পরীক্ষার কেস ব্যবহার করেছেন, তাই না?
ক্যালকুলেটরফলাইন

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