অপ্টিমাস ব্যতীত অন্যান্য পুরষ্কার


36

চ্যালেঞ্জ

একটি ইনপুট পূর্ণসংখ্যা দেওয়া n > 0, আউটপুট মৌলিক সংখ্যার নম্বর ( অন্যান্য তুলনায় n, যদি n(ডিজিটের নম্বর পরিবর্তন করার ছাড়াই) নিজেই মৌলিক) যে n এর দশমিক সম্প্রসারণ এক অঙ্ক পরিবর্তনের দ্বারা উত্পাদিত করা যাবে।

উদাহরণ

উদাহরণস্বরূপ n = 2,। দশমিক দশমিক প্রসারণে এক অঙ্কের পরিবর্তন করে 2আমরা তিনটি অতিরিক্ত মৌলিক সংখ্যা নিয়ে আসতে পারি 3, 5, 7, তাই a(n) = 3

অন্য একটি উদাহরণের জন্য n = 13,। একটি অঙ্ক পরিবর্তন করে, আপনি প্রাইমস পেতে পারেন 11, 17, 19, 23, 43, 53, 73, 83, তাই a(13) = 8

চূড়ান্ত উদাহরণের জন্য n = 20,। একটি অঙ্ক পরিবর্তন করে, আপনি প্রাইমস পেতে পারেন 23, 29, তাই a(20) = 2

ক্রম

আপনাকে শুরু করার জন্য এখানে প্রথম 20 টি শর্ত রয়েছে। এটি OEIS A048853

4, 3, 3, 4, 3, 4, 3, 4, 4, 4, 7, 4, 8, 4, 4, 4, 7, 4, 7, 2

বিধি

  • ইনপুট এবং আউটপুটটি আপনার ভাষার স্থানীয় সংখ্যার সাথে মানানসই fit
  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক বিন্যাসে দেওয়া যেতে পারে ।
  • নেতৃস্থানীয় শূন্যগুলি উপেক্ষা করুন (উদাহরণস্বরূপ, 03এই সূত্রের অধীনে কোনও প্রাথমিক সংখ্যা নয়)।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরে আসতে পারেন।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন পরীক্ষার পরিবেশের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে অন্য লোকেরা আপনার কোডটি চেষ্টা করে দেখতে পারে!
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

4
আমি nআউটপুট সবচেয়ে ক্ষুদ্রতর জন্য চিন্তা করার চেষ্টা করছি 0। আমি মনে করি এটি n = 200। আমিও মনে করি তারা আখা আসা: 200,202,204,206,208, 320,322,...,328, 510,...,518, 620,...628, 840,...,848, ইত্যাদি
ইঞ্জিনিয়ার টোস্ট

"ইনপুট এবং আউটপুটটি আপনার ভাষার নেটিভ ইন্টিজার টাইপের সাথে মানানসই বলে ধরে নেওয়া যেতে পারে" কী বলে যে স্ট্রিং হিসাবে আমাদের ইনপুট নিতে দেওয়া হচ্ছে না?
ডেড পসসাম

1
@ ডেডপোসাম নং, এটি অনুমোদিত। আপনি কেবল ৩২-বিট পূর্ণসংখ্যার ব্যবহার করছেন তবে উদাহরণস্বরূপ, ইনপুট হিসাবে আপনার 2 ^ 100 সম্পর্কে চিন্তা করার দরকার নেই।
অ্যাডমবর্কবার্ক

যদি আমি ওভারবোর্ডে যাচ্ছি তবে আমাকে জানতে দিন ... আমার কাছে এখন 3 টি আলাদা জমা রয়েছে
প্যাট্রিক রবার্টস

2
@ ইঞ্জিনিয়ারস্টোস্ট প্রথম উদাহরণটি খুঁজে পাওয়ার পরে (294001), অবশেষে আমি এটি OEIS: A192545 এবং A158124 এ সন্ধান করার চিন্তা করেছি । এছাড়াও প্রাসঙ্গিক: A143641
janrjan জোহানসেন

উত্তর:


10

05 এ বি 1 , 17 16 14 11 বাইট

ā°`<Ÿʒ.L}pO

ব্যাখ্যা:

ā             Push inclusive range from 1 to the length of the input
 °            Raise 10 to the power of each element
  `           Push each element to the stack
   <          Decrement the topmost element
    Ÿ         Inclusive range
              For 13, this creates an array like [10 11 12 13 14 .. 98 99]
     ʒ.L}     Only keep elements with a levenshtein distance to the input of
              exactly one
         p    Check each element for primality
          O   Sum

এটি অনলাইন চেষ্টা করুন! বা 100 পর্যন্ত


1
.L? সিরিয়াসলি? .L?!?!
এরিক দি আউটগল্ফার

@EriktheOutgolfer L
Okx

মানে, লেভেনস্টেইনের দূরত্বের জন্য একটি বিল্টিন রয়েছে!
এরিক আউটগল্ফার

@EriktheOutgolfer ¯ \: _ (ツ): _ / ¯
Okx

আমি জানি এটি কিছুক্ষণ হয়ে গেছে তবে আপনি <বাইটটি সংরক্ষণ করতে পারবেন remove এমনকি যদি ফিল্টারটি 100/ 1000/ 10000/ ইত্যাদি অপসারণ না করে তবে এটি কোনওভাবেই প্রধান নয় তাই আউটপুটকে প্রভাবিত করবে না।
কেভিন ক্রুইজসেন

5

পাইথন 2 , 146 136 127 121 118 বাইট

পরামর্শের জন্য @ মিস্টার এক্সকোডারকে ধন্যবাদ

lambda I:sum(all(i%v for v in range(2,i))*sum(z!=x for z,x in zip(I,`i`))==1for i in range(1+10**~-len(I),10**len(I)))

ব্যাখ্যা:

প্রথমে এড়ানো ইনপুট দৈর্ঘ্যের সমান দৈর্ঘ্য সহ সংখ্যাগুলি তৈরি করুন (1,10,100,1000, ...)

for i in range(1+10**~-len(I),10**len(I))

উত্পন্ন সংখ্যাটি কেবলমাত্র একটি অঙ্কের দ্বারা ইনপুট থেকে পৃথক হয় তা পরীক্ষা করুন

sum(z!=x for z,x in zip(I,`i`))==1

প্রাইম জন্য পরীক্ষা করুন

all(i%v for v in range(2,i))

গণনা

sum(...)    

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


r=rangeআপনি এটি অনেক বার ব্যবহার না করার কারণে এটি ল্যাম্বডা তৈরি না করা আরও সংক্ষিপ্ত হতে পারে ...?
স্টিভি গ্রিফিন

1
এই মত জিনিস জন্য কাজ করে 143? কারণ আমি দেখছি range(1,10), এটি বাদ দেয় 0এবং 103তা প্রধান
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার স্থির করেছেন
মৃত

1
আপনি প্রয়োজন হবে না 0যে r(0,10)r(10)আল্লাহই যথেষ্ট।
মিঃ এক্সকোডার 15

1
এছাড়াও, আমি এটি এটিকে রাখার পরামর্শ দিচ্ছি:lambda I,r=range:
মিঃ এক্সকোডার

4

জাভাস্ক্রিপ্ট (ES6) 148 বাইট

স্ট্রিং হিসাবে ইনপুট নেয় এবং একটি সংখ্যা হিসাবে ফিরে আসে

n=>(n.replace(/./g,"$`a$' ").split` `.map(s=>s&&[..."0123456789"].map(d=>r+=+(t=s.replace(/a/,d))[0]&&t^n&&(p=v=>t>1&(--v<2||t%v&&p(v)))(t)),r=0),r)

কোড স্নিপেট উদাহরণ:

f=
n=>(n.replace(/./g,"$`a$' ").split` `.map(s=>s&&[..."0123456789"].map(d=>r+=+(t=s.replace(/a/,d))[0]&&t^n&&(p=v=>t>1&(--v<2||t%v&&p(v)))(t)),r=0),r)

for(var k=1;k<=20;k++)
  o.innerText+=f(""+k)+" "
<pre id=o></pre>


4

জেলি , 21 18 15 বাইট

ডেনিসকে 3 বাইট ধন্যবাদ

æḟ⁵æR×⁵$DnDS€ċ1

এটি অনলাইন চেষ্টা করুন! বা সমস্ত টেস্টকেস যাচাই করুন


æḟ⁵æR×⁵$DnDS€ċ1কয়েক বাইট সাশ্রয়।
ডেনিস

বিকল্প পরিসরটি বেশ চালাক।
লিকি নুন

3

গণিত, 105 বাইট

F=Count[Range[f=IntegerDigits;g=10^Length@f@#/10,10g],n_/;PrimeQ@n&&MatchQ[f@n-f@#,{x=0...,_,x}]&&n!=#]&;

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

Functionযা ইতিবাচক পূর্ণসংখ্যার প্রত্যাশা করে #fফাংশনের সমান সেট করে IntegerDigitsযা এর ইনপুটটির অঙ্কের তালিকা প্রদান করে। আমরা নিতে Rangeথেকে gথেকে 10g(সমেত), যেখানে g=10^Length@f@#/10সবচেয়ে বড় শক্তি 10কম বা ইনপুট সমান #, তারপর যেমন যে । কিনা তা পরীক্ষা মৌলিক হয়, কিনা তা পরীক্ষা এর সংখ্যা তালিকা মধ্যে পার্থক্য এবং ফর্ম হল , এবং নিশ্চিত করে যে এবং হয় ।CountnPrimeQ@n&&MatchQ[f@n-f@#,{x=0...,_,x}]&&n!=#PrimeQ@nnMatchQ[f@n-f@#,{x=0...,_,x}]n#{0..., _, 0...}n!=#n#Unequal


3

জাভাস্ক্রিপ্ট (ES6), 153 142 139 বাইট

n=>([...n].map((c,i,[...a])=>[...''+1e9].map((u,j)=>s+=j+i&&j!=c?p((a.splice(i,1,j),a.join``)):0),s=0,p=q=>eval('for(k=q;q%--k;);k==1')),s)

স্ট্রিং হিসাবে ইনপুট গ্রহণ করে। অবৈধ ইনপুটটির জন্য অপরিজ্ঞাত আচরণ, যদিও এটি ভাবতে পারে এমন কোনও স্ট্রিংয়ের ত্রুটি ছাড়াই এটি শেষ করা উচিত। অগত্যা মহাবিশ্বের তাপ-মৃত্যুর আগে নয়, বিশেষত দীর্ঘ স্ট্রিংয়ের জন্য।

ডেমো

f=
n=>([...n].map((c,i,[...a])=>[...''+1e9].map((u,j)=>s+=j+i&&j!=c?p((a.splice(i,1,j),a.join``)):0),s=0,p=q=>eval('for(k=q;q%--k;);k==1')),s)
console.log([...''+1e19].map((_,i)=>f(i+1+'')).join())
i.onchange=()=>console.log(f(i.value))
<input id=i>

উন্নতি

reduce()কলগুলিতে কলগুলি রিফ্যাক্ট করে 11 টি বাইট সংরক্ষণ করা হয়েছে এবং কলটির প্রসঙ্গের পরিবর্তে ফাংশন প্যারামিটারে map()সুস্পষ্টভাবে অ্যারে অনুলিপি করে ।asplice()

রূপান্তরিত করার জন্য @ নীলের পরামর্শের জন্য 3 বাইট সংরক্ষণ করা [...Array(10)]হয়েছে [...''+1e9]

অবিহিত কোড

input => (
  [...input].map(
    (char, decimal, [...charArray]) =>
      [...'' + 1e9].map(
        (unused, digit) => sum +=
          digit + decimal && digit != char ?
            prime(
              (
                charArray.splice(decimal, 1, digit)
                , charArray.join``
              )
            ) :
            0
      )
    , sum = 0
    , prime = test => eval('for(factor = test; test % --factor;); factor == 1')
  )
  , sum
)

ব্যাখ্যা

এই উত্তরটিmap() থেকে ধার এবং সংশোধন করা হয়েছিল এমন প্রাথমিকতা পরীক্ষায় পাস করা পরিমাণের পরিমাণের যোগফলটি ফাংশনটি দ্বি-স্তরের ব্যবহার করে ।

(আসল উত্তর)

reduce((accumulator, currentValue, currentIndex, array) => aggregate, initialValue)

সুতরাং উদাহরণস্বরূপ, একটি অ্যারের সমষ্টি নিরূপণ করা, আপনি একটি পাস হবে initialValueএর 0, এবং একটি আসতে aggregateসমান accumulator + currentValue। এই পদ্ধতির সামান্য পরিবর্তন করে, আমরা পরিবর্তে আদিমতার পরীক্ষায় উত্তীর্ণ হওয়া অনুমানের সংখ্যা গণনা করি:

reduce(
  (passedSoFar, currentDecimal, currentIndex, digitArray) =>
    isValidPermutation() ?
      passedSoFar + prime(getPermutation()) :
      passedSoFar
  , 0
)

এটি মূলত অন্তঃস্থল reduce(), যা digitArrayপ্রতিটি decimalনির্দিষ্টকে পরিবর্তিত করে এর সমস্ত ক্রিয়াকলাপকে পুনরায় করে permutatedDigit। তারপরে আমাদের reduce()প্রতিটি সম্ভাব্য permutatedDigitযা পুনরায় প্রতিস্থাপন করতে হবে তার পুনরাবৃত্তি করতে একটি বহিরাগত প্রয়োজন decimal, যা সঠিক 0-9

বাস্তবায়নে অস্বাভাবিকতা

[...''+1e9].map((u,j)=>...সংক্ষিপ্ততম উপায়টি ছিল নীল কোনও যুক্তির 0মাধ্যমে পুনরাবৃত্তি করার কথা ভাবতে পারে 9। এটি করা ভাল হবে uতবে uএই ক্ষেত্রে অ্যারের প্রতিটি উপাদানগুলির জন্য কার্যকর নয়।

i+jত্রৈমাসিক অবস্থায় 0চ্যালেঞ্জের বিবরণী অনুসারে এটি নিশ্চিত করা যায় যে এটি কোনও শীর্ষস্থানীয় অঙ্কের অনুমান নয়। j!=cআসলটি প্রাথমিক nপরীক্ষার মধ্য দিয়ে যাওয়ার জন্য প্রার্থী নয় তা নিশ্চিত করে ।

(a.splice(i,1,j),a.join``)এক ধরণের গন্ডগোল। splice()এ অঙ্ক প্রতিস্থাপন decimal == iসঙ্গে permutatedDigit == j, কিন্তু যেহেতু splice()আয় সরানো উপাদান (এই ক্ষেত্রে, সমান হবে [a[i]]রুপান্তরিত অ্যারের পরিবর্তে), আমরা পরিবর্তিত অ্যারের পাস কমা অপারেটর ব্যবহার করা আবশ্যক aআগে primality পরীক্ষা, কিন্তু না join()এটা ing একটি সংখ্যা স্ট্রিং মধ্যে।

শেষ অবধি, eval()যেহেতু আরও বৌদ্ধিক পদ্ধতির তুলনায় এটি একটি বাইট সংরক্ষণ করা হয়, এটি ছোট হয়:

q=>eval('for(k=q;q%--k;);k==1')

q=>{for(k=q;q%--k;);return k==1}

প্রাইম টেস্টের রেফারেন্স কলটির pঅব্যবহৃত যুক্তিতে প্রাথমিকভাবে শুরু করা হয় map()


আমি মনে করি টিপস পৃষ্ঠাটি বলেছে [...''+1e9] সংক্ষিপ্ত।
নীল

2

পাইথন 2 , 134 বাইট

lambda x,r=range,l=len:sum(~-f*(~-l(x)==sum(`f`[t]==x[t]for t in r(l(x))))and all(f%v for v in r(2,f))for f in r(10**~-l(x),10**l(x)))

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

আরও মার্জিত, দীর্ঘ সংস্করণ:

lambda x,r=range,l=len:l(filter(lambda f:(~-f*(~-l(x)==sum(`f`[t]==x[t]for t in r(l(x)))))*all(f%v for v in r(2,f)),r(10**~-l(x),10**l(x))))

ইনপুটটি স্ট্রিং হিসাবে নেওয়া হয়।


ব্যাখ্যা (পুরানো সংস্করণ)

  • lambda x,r=range,l=len:- একটি স্ট্রিং প্যারামিটার xএবং দুটি ধ্রুবক পরামিতি সহ r=rangeএবং একটি ল্যাম্বডা সংজ্ঞা দেয় l=len

  • sum(1...)- দৈর্ঘ্যটি পান, যা 1 বাইট ওভার সাশ্রয় করে len([...])

  • for f in r(10**~-l(x),10**l(x)) - ইনপুটটির মতো একই ক্রমের পরিমাণের সাথে একেবারে সমস্ত নম্বর উত্পন্ন করে (আশা করি 0 ) এর । উদাহরণস্বরূপ, এর একটি ইনপুট 3ফলত [1, 2, 3, 4, 5, 6, 7, 8, 9]

  • sum(1for t in r(l(x))if`f`[t]==x[t])==~-l(x)and f>1 - বর্তমান সংখ্যাটি ইনপুট থেকে ঠিক 1 ডিজিট দূরে রয়েছে কিনা এবং এটি 1 এর চেয়ে বেশি কিনা তা পরীক্ষা করে।

  • all(f%v for v in r(2,f)) - বর্তমান সংখ্যাটি প্রধান কিনা তা পরীক্ষা করে দেখুন।


1
আপনি কিছু বাইট সংরক্ষণ sum(1for..ifBOOL)করতে পরিবর্তনকে ঘৃণা করেনsum(BOOLfor)
ডেড

আমরা স্ট্রিং হিসাবে ইনপুট নিতে অনুমতি দেওয়া হয়? "ইনপুট এবং আউটপুটটি আপনার ভাষার নেটিভ পূর্ণ সংখ্যার সাথে মানানসই করা যেতে পারে" আমি নিশ্চিত নই
ডেড পসাম

@ ডেডপসসাম এর উত্তরগুলির মধ্যে কিছু রয়েছে। কেন অনুমতি দেওয়া হবে না ?!
মিঃ এক্সকোডার 16

আমি আজকের জন্য ভোটের বাইরে চলে এসেছি, তবে এটি +1 করবে: ডি
ডেড পসসাম

পছন্দ করুন ভুলে যাবেন না আমি তোমাকে পিং করব! ( </joke>)
মিঃ এক্সকোডার

1

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

i=(a=prompt()).length;s=0;while(i--)for(j=0;j<=9;j++){(b=[...a]).splice(i,1,j);k=b=b.join('');while(b%--k);s+=i+j&&a[i]!=j&&k==1}alert(s)

আত্তীকরণ আমার অন্যান্য জবাব একটি পূর্ণ প্রোগ্রাম ওয়েব এপিআই পদ্ধতি ব্যবহার করে জমা মধ্যে prompt()এবং alert()


1

শিম , 126 বাইট

00000000: a64d a065 8050 80a0 5d20 8001 a64d a06f  ¦M e.P. ] ..¦M o
00000010: 8025 39b5 cb81 2065 27a6 4da0 6680 2581  .%9µË. e'¦M f.%.
00000020: 0035 cb81 2066 27a6 53d0 80cd a05e 8043  .5Ë. f'¦SÐ.Í ^.C
00000030: cf20 5d00 2080 82a0 65a5 3a20 66a6 4da0  Ï ]. .. e¥: f¦M 
00000040: 6780 4da0 5e80 53d0 80a0 5e20 807b 2300  g.M ^.SÐ. ^ .{#.
00000050: b5cc a05e 8f4b c120 6728 264d a06f 814e  µÌ ^.KÁ g(&M o.N
00000060: cecc a065 8b20 6681 4cd0 84a0 5d20 6581  ÎÌ e. f.LÐ. ] e.
00000070: 2066 814c a067 8025 3a26 206f b130        f.L g.%:& o±0

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

একটি অভিযোজন আমার পূর্ণ-প্রোগ্রাম জাভাস্ক্রিপ্ট জমা দেওয়ার

জাভাস্ক্রিপ্ট সমতুল্য

i=a.length
s=0
while(i--){
  j=10
  while(j--){
    (b=[...a]).splice(i,1,j)
    k=b=b.join('')
    while(b%--k);
    s+=i+j&&a[i]!=j&&k==1
  }
}
s

ব্যাখ্যা

aস্ট্রিং হিসাবে ইনপুটটির প্রথম লাইন হিসাবে অন্তর্নিহিতভাবে আরম্ভ করা হয় এবং শেষ বিবৃতিটি sস্পষ্টতই আউটপুট হয়, এতে প্রধান আদেশের যোগফল থাকে।


1

হুশ , 32 বাইট

Lof§&ȯ=1Σzo±≠d⁰o=Ld⁰L↑o≤Ld⁰Lmdİp

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

Ungolfed / ব্যাখ্যা

                              İp  -- get all primes
                            md    -- and convert them to list of digits
                     ↑o≤   L      -- take as long as the lenghth of these digit lists are ≤ ..
                        Ld⁰       -- .. the number of digits of input 
 of                               -- from those primes filter:
               o=Ld⁰L             --   same number of digits as input
   §&                             --   and
        Σz                        --   the number of..
          o±≠d⁰                   --   .. digits that differ from input digits ..
     ȯ=1                          --   .. must be one
L                                 -- finally count them

1

জাপট , 28 23 বাইট

-৫ বাইটস @ETH প্রডাকশনগুলিতে ধন্যবাদ

¬x@AÇ|Y©+UhYZsÃâ kUn)èj

ইনপুট হিসাবে একটি স্ট্রিং লাগে।

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


সঙ্গে সম্ভবত অন্য এক দম্পতি ¬x@AÇ|Y©+UhYZsÃâ kUn)èj?
ইটিএইচ প্রডাকশনগুলি

1

পিএইচপি , 151 147 141 140 136 134 129 128 বাইট

-আইনেসিও -6 কে বাইটস ধন্যবাদ; -১ বাইট @ টিটাসকে ধন্যবাদ

<?php for($i=$m=10**strlen($n=$argv[1]);$i-->$m/10;)if(levenshtein($n,$i)==$f=$t=1){while($t<$i)$f+=$i%$t++<1;$c+=$f==2;}echo$c;

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

ফর্ম্যাট, মন্তব্য সহ:

<?php
// Work through each integer with the same number of digits as the input $argv[1].
for ($i = $m = 10 ** strlen($n = $argv[1]); $i-- > $m / 10;)
    // Is it exactly one digit different from the input?
    if (levenshtein($n, $i) == $f = $t = 1) {
        // Count its factors.
        while ($t < $i) $f += $i % $t++ < 1;
        // If there are exactly 2 factors then it's a prime, so increment the counter.
        $c += $f == 2;
    }
// Print the final count.
echo $c;

এটি যতটা সম্ভব সংক্ষিপ্ত রাখতে আমি করেছি:

  • সম্মিলিত কার্যাদি $f = $t = 1;
  • ++অন্য অভিব্যক্তির অংশ হিসাবে একটি বর্ধিতকরণের দিকে ঝাঁকুনি $f += $i % $t++ == 0(ইনক্রিমেন্টটি মডিউলাস অপারেশনের পরে কার্যকর করা হয় এবং সুতরাং এর ফলাফলকে প্রভাবিত করে না);
  • এবং ifশর্তসাপেক্ষ বর্ধনের জন্য একটি বিবৃতি ব্যবহার না করে বুলিয়ান সত্য হিসাবে প্রয়োগ করা হয় যখন পূর্ণসংখ্যা হিসাবে কাস্ট করা হয় তখন 1 এর $c += $f == 2;পরিবর্তে ব্যবহার করা হয় if ($f == 2) $c++;

1
আপনার $ সি হিসাবে সংজ্ঞা দেওয়ার দরকার নেই, এটি প্রথম + 0 হিসাবে গণনা করা হয়
Einacio

@ আইনাসিও গল্ফের নিয়ম কী? এটি কি অনুমোদিত, যেমন এটি একটি অনির্ধারিত পরিবর্তনশীল সতর্কতা বিজ্ঞপ্তি দেয়?
ওয়েবস্মিথ্রি

@ আইনাসিও স্পষ্টতই এসটিডিআরআর-এর যে কোনও আউটপুট উপেক্ষা করা যায়, তাই পরামর্শের জন্য ধন্যবাদ।
ওয়েবস্মিথ্রি

1
ব্যবহারের জন্য +1 levenshtein। ভাল যুক্তি! $i%$t++<1তুলনায় খাটো $i%$t++==0
টাইটাস


0

পিএইচপি, 100 + 1 বাইট

for(;~($a=$argn)[$i];$i++)for($d=-!!$i;$d++<9;$c+=$k==1)for($a[$i]=$d,$k=$a;--$k&&$a%$k;);echo$c-$i;

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন

ভাঙ্গন

for(;~($n=$argn)[$i];$i++)  # loop through argument digits, restore $n in every iteration
    for($d=-!!$i;               # loop $d from 0 (1 for first digit)
        $d++<9;                 # ... to 9
        $c+=$k==1                   # 3. if divisor is 1, increment counter
    )
        for($n[$i]=$d,              # 1. replace digit
            $k=$n;--$k&&$n%$k;      # 2. find largest divisor of $n smaller than $n
        );
echo$c-$i;                  # print counter - length

0

জাভা 8, 201 194 বাইট

n->{String s=n+"";int r=0,i=0,j,k,t,u,l=s.length();for(;i<l;i++)for(j=0;++j<10;r+=n==u|t<2?0:1)for(u=t=new Integer(s.substring(0,i)+j+(i<l?s.substring(i+1):"")),k=2;k<t;t=t%k++<1?0:t);return r;}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

n->{                        // Method with integer as parameter and return-type
  String s=n+"";            //  String representation of the input-int
  int r=0,                  //  Result-integer
      i=0,j,k,              //  Index-integers
      t,u,                  //  Temp integers
      l=s.length();         //  Length of the String
  for(;i<l;i++)             //  Loop (1) from 0 to `l` (exclusive)
    for(j=0;++j<10;         //   Inner loop (2) from 1 to 10 (exclusive)
        r+=                 //     And after every iteration, raise the result by:
           n==u             //      If the current number equals the input
           |t<2?            //      or it is not a prime:
            0               //       Add nothing to the result-counter
           :                //      Else:
            1)              //       Raise the result-counter by one
      for(                  //    Inner loop (3)
          u=t=              //     First set both `u` and `t` to:
              new Integer(  //      Convert the following String to an integer: 
               s.substring(0,i)
                            //       Get the substring from 0 to `i` (exclusive)
               +j           //       + `j`
               +(i<l?       //       + If `i` is smaller than the String-length:
                  s.substring(i+1)
                            //          The substring from 0 to `i` (inclusive)
                 :          //         Else:
                  "")),     //          Nothing
          k=2;              //     And start `k` at 2
              k<t;          //     Continue looping as long as `k` is smaller than `t`
        t=t%k++<1?          //     If `t` is divisible by `k`:
           0                //      Change `t` to 0
          :                 //     Else:
           t                //      Leave `t` as is
      );                    //    End of inner loop (3)
                            //    (`t` remained the same after loop 3? -> It's a prime)
                            //   End of inner loop (2) (implicit / single-line body)
                            //  And of loop (1) (implicit / single-line body)
  return r;                 //  Return the result-counter
}                           // End of method

new Integer(s.substring(0,i)+j+(i<l?s.substring(i+1):"") এই পূর্ণসংখ্যার ফলাফল হবে:

জন্য 0-9: 1, 2, 3, 4, 5, 6, 7, 8, 9
জন্য 10: 10, 20, 30, 40, 50, 60, 70, 80, 90, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
জন্য 11: 11, 21, 31, 41, 51, 61, 71, 81, 91, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
প্রভৃতি


0

জাভাস্ক্রিপ্ট (ES7), 118 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়।

n=>[...2**29+'4'].map(d=>n.replace(/./g,c=>s+=d+i>0&(P=k=>N%--k?P(k):N-n&&k==1)(N=p+d+n.slice(++i),p+=c),i=p=0),s=0)|s

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

মন্তব্য

n =>                        // n = input number (as a string)
  [...2**29 + '4']          // generate "5368709124" (all decimal digits)
  .map(d =>                 // for each digit d in the above string:
    n.replace(/./g, c =>    //   for each digit c in n:
      s +=                  //     increment s if the following code yields 1:
        d + i > 0 & (       //       if this is not the first digit of n or d is not "0":
          P = k =>          //         P = recursive function taking k and using N:
            N % --k ?       //           decrement k; if k is not a divisor of N:
              P(k)          //             do recursive calls until it is
            :               //           else:
              N - n &&      //             return true if N is not equal to n
              k == 1        //             and k is equal to 1 (i.e. N is prime)
          )(                //         initial call to P ...
            N =             //           ... with N defined as:
              p +           //             the current prefix p
              d +           //             followed by d
              n.slice(++i), //             followed by the trailing digits
                            //             (and increment the pointer i)
            p += c          //           append c to p
          ),                //         end of initial call
          i = p = 0         //         start with i = p = 0
    ),                      //   end of replace()
    s = 0                   //   start with s = 0
  ) | s                     // end of map(); return s

0

রুবি সঙ্গে -rprime, 101 বাইট

-rprimeরুবিতে প্রাইম মডিউলটি আমদানি করে। সমস্ত প্রাইম আপ করুন10R(10এন)+ +1 এবং গণনা করুন কতগুলি থেকে একই সংখ্যা রয়েছে have এন এবং 1 ডিজিট বন্ধ।

->n{d=n.digits;Prime.each(10**l=d.size).count{|x|d.zip(e=x.digits).count{|a,b|a==b}==l-1&&e.size==l}}

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

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