পাই মধ্যে পুরস্কার খুঁজুন


30

পুরষ্কার সর্বত্র ...

তারা পাই ভিতরে লুকিয়ে

3.141592653 58979 3238 462643 3832 795028841 971693993751

আসুন সেই প্রাইমগুলি পাওয়া যাক!

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা হিসাবে ইনপুট দেওয়া হয় n>0, প্রথম nঅঙ্কের মধ্যে কতগুলি প্রাইম লুকানো আছে তা সন্ধান করুনPi

উদাহরণ

জন্য n=3আমাদের মধ্যে প্রাইমস অনুসন্ধান করা উচিত [3,1,4]। 2 primes আছে (3,31)তাই আপনার কোড আউটপুট উচিত, 2
কারণ n=10, প্রথম 10 সংখ্যার হয় [3,1,4,1,5,9,2,6,5,3]এবং আপনার কোড উচিত আউটপুট 12কারণ [2, 3, 5, 31, 41, 53, 59, 653, 4159, 14159, 314159, 1592653]লুকানো ছিল (এবং পাওয়া যায় নি!)

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

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

1->1  
3->2  
13->14  
22->28  
42->60  
50->93

150->197  
250->363  
500->895

বিধি

আপনার কোড সক্ষম হওয়া আবশ্যক জন্য অন্তত সব মৌলিক এটিn=50
, 'হ্যাঁ আপনি পারেন প্রথম 50 টি সংখ্যা হার্ডকোড এর Piযদি আপনি চান
এন্ট্রি উত্তর hardcoding অবৈধ

এটি .বাইটের মধ্যে সবচেয়ে ছোট উত্তর!


6
"আপনি যদি পছন্দ করেন তবে পাই এর প্রথম 50 টি সংখ্যা হার্ডকোড করতে পারেন" । প্রথম সমস্যার সমাধান! এখন 50-অঙ্কের পূর্ণসংখ্যার উপর গল্ফড প্রাথমিকতা পরীক্ষার জন্য ... ও_ও (এটি দুর্দান্ত চ্যালেঞ্জ, তবে শক্ত গণিত অন্তর্নির্মিত বা গ্রন্থাগারগুলি সম্ভবত প্রয়োজন required)
আর্নল্ড

3
@totallyhuman এই ক্রমটি এখনও OEIS তেও নয়! খ্যাতি আপনার দাবির জন্য সময়?
25:38

3
আইএমও প্রথম 50 টি মানকে হার্ডকোডিংয়ের অনুমতি দেয় এই চ্যালেঞ্জের জন্য ক্ষতিকারক। এই চ্যালেঞ্জটি মূলত দুটি অংশ, 1) প্রথম 50 টি মানকে সংকুচিত করার চেষ্টা করুন, বা 2) আসলে চ্যালেঞ্জটি করে।
জেএডি

2
চ্যালেঞ্জ এই ধরনের, যেখানে হিসাব কঠিন / ধীর / মেমরি নিবিড় হয়ে এ সাধারণত, এটা পরিবর্তে একটি অবাধ কর্তক স্থাপনের তাত্ত্বিক কাজ প্রোগ্রামের জন্য যথেষ্ট, এবং hardcoding অনুমতি দেয়।
জেএডি

3
@ বিলস্টটিইহন বেশ কয়েকটি উত্তর দেওয়ার পরেও নিয়ম আপডেট করার বিষয়টি এই ওয়েবসাইটের চেতনাবিরোধী। আপনি এই প্রশ্নটি স্যান্ডবক্সে পোস্ট করেছেন ? আপনার প্রতিক্রিয়াটি খুব শীঘ্রই পাওয়া যেত যে হার্ডকোডযুক্ত উত্তরগুলি আসত
অলিভিয়ার গ্রাগোয়ার

উত্তর:


20

05 এ বি 1 ই ,  10  8 বাইট

-২ বাইট আদনানকে ধন্যবাদ ( pভেক্টরাইজিস)

<žsþŒÙpO

এটি অনলাইন চেষ্টা করুন! (এন = 98413 অবধি কাজ করবে তবে প্রারম্ভিকতার জন্য এত বড় সংখ্যক পরীক্ষা করার প্রয়োজনের কারণে এমনকি এন = 50 এর জন্য খুব ধীর থাকবে - এন = 50 এর জন্য তিন সেকেন্ডে তিন বার বেরিয়ে যাবে)

কিভাবে?

<žsþŒÙpO - implicitly push input, n
<        - decrement = n-1
 žs      - pi to that many decimal places (i.e. to n digits)
   þ     - only the digits (get rid of the decimal point)
    Œ    - all sublists
     Ù   - unique values
      p  - is prime? (vectorises) 1 if so, 0 otherwise
       O - sum
         - implicitly print the top of the stack

<žsþŒÙpO8 বাইটের জন্য কাজ করা উচিত
আদনান

আহ হাঁ pভেক্টরাইজস ধন্যবাদ!
জোনাথন অ্যালান

2
হ্যাঁ! অবশেষে একটি খুব সংক্ষিপ্ত কোড গল্ফ উত্তর যা আমি আসলে বুঝতে পারি! : ডি
ফ্যাবিয়ান রোলিং

11

গণিত, 76 বাইট

Tr[1^Union@Select[FromDigits/@Subsequences@#&@@RealDigits[Pi,10,#],PrimeQ]]&

ওহ, ন্যায্য নয়, আমি ম্যাথমেটিকা ​​গল্ফের সাথে পরিচিত নই। : পি (+1)
সম্পূর্ণমানবিক

@ টোটালিহুমান আমরা এটি একই সাথে পোস্ট করেছি। এটি খুব অস্বাভাবিক!
J42161217

আমি কয়েকটি সিনট্যাকটিক্যাল ট্রিকস ব্যবহার করে আমার উত্তরটি গল্ফ করেছি তবে আমি আগে ব্যবহৃত ফাংশনগুলি রেখেছি। আমি আশা করি আপনি কিছু মনে করবেন না।
সম্পূর্ণমানবিক

Tr[1^...]তালিকার দৈর্ঘ্য সন্ধানের এটি একটি চতুর উপায়, দুর্দান্ত!
সংখ্যামানিয়াক

6

গণিত, 104 97 90 বাইট

Length@DeleteDuplicates@Select[FromDigits/@Subsequences@First@RealDigits[Pi,10,#],PrimeQ]&

হাহাহাহাহা, আমি এই কাজটি পরিচালনা করতে পেরেছি। ম্যাথমেটিকাকে কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আমার ধারণা নেই। XD

ইনপুট:

[50]

1
আপনি আমার থেকে কয়েক সেকেন্ড আগে পোস্ট করেছেন। এবং আমাদের উত্তরগুলি খুব একই রকম! +1
J42161217

আপনি কি সবে পোস্ট করেছেন এমন সংখ্যা সম্পর্কে নিশ্চিত (অজানাগুলির দ্বিগুণ চেক করুন) আমি পাইথন এবং সিম্পি ব্যবহার করে
জোনাথন অ্যালান

@ 50 96জোনাথান অ্যালান ওপি বলেছেন 50 টি সংখ্যায় 93 টি প্রাইম রয়েছে, তাই সিম্পির যথার্থতা বন্ধ হতে পারে ..?
সম্পূর্ণমানবিক

@ জোনাথন অ্যালান স্যাম্পি কি কোনও সম্ভাবনা বা ডিটারিস্টোনিক প্রাথমিকত্ব পরীক্ষা ব্যবহার করছেন? (ম্যাথামেটিকাল এর PrimeQ জন্য একই প্রশ্ন।)
Arnauld

@ আর্নল্ড ভাল পয়েন্ট, নিশ্চিত নন।
জোনাথন অ্যালান

3

পাইথন 3 , 274 237 207 194 189 বাইট

-৩৩ বাইট উইথ উইজার্ডকে ধন্যবাদ! -১৪ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ।

হার্ডকোডগুলি পাই এর প্রথম 50 টি সংখ্যা কিন্তু ম্যানুয়ালি বাকি সমস্ত কিছু গণনা করে।

x=int(input());l="31415926535897932384626433832795028841971693993751"[:x]
print(sum(all(i%m for m in range(2,i))for i in{int(i)for w in range(x)for i in[l[j:j-~w]for j in range(x-w)]}-{1}))

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



l=list("31415...)40 ডলার অক্ষর সাশ্রয় করা উচিত এবং যে পরিবর্তন আপনি প্রতিস্থাপন করতে দেয় map(str,i)শুধু সঙ্গে i
আশেল্লি


কিছু অদ্ভুত কোড সরিয়ে 195 বাইট
মিঃ এক্সকোডার


1

আর, 156 123 বাইট

cat(cumsum(c(1,1,0,1,1,4,1,0,0,3,0,0,2,7,3,1,0,3,0,0,0,0,0,0,4,1,0,6,0,3,2,0,0,0,0,0,0,4,3,3,6,0,4,8,2,5,3,6,0,5))[scan()])

সুপার আকর্ষণীয় সমাধান। সঠিক একটি নিয়ে কাজ করা।

@ জিউসেপ্পিকে ধন্যবাদ 33 বাইট সংরক্ষণ করা হয়েছে।

আর (+ সংখ্যা এবং জিএমপি), 198 বাইট

function(n,x=unique(gmp::as.bigz(unlist(sapply(1:n,function(x)substring(gsub("[.]","",numbers::dropletPi(50)),x,x:n))))))min(length(x),sum(sapply(sapply(x[x>0&!is.na(x)],gmp::factorize),length)==1))

সঠিক সমাধান। nইনপুট হিসাবে নেয় ।

numbers::dropletPi(50)পাই এর প্রথম 50 দশমিক স্থান উত্পন্ন করতে ব্যবহার করে। gsubদশমিক পয়েন্ট সরান। substringপাই পর্যন্ত প্রতিটি সম্ভাব্য সাবস্ট্রিং (অবাক বিস্ময়) লাগে n

প্রত্যাবর্তিত তালিকাটি সমতল এবং gmpএর bigzবিন্যাসে রূপান্তরিত । দৈর্ঘ্য 50 এর পূর্ণসংখ্যা সংরক্ষণ করার জন্য এই ফর্ম্যাটটির প্রয়োজন uniquethat ভেক্টরের অনন্য মানগুলি লাগে। এই ফলাফল সংরক্ষণ করা হয় x

তারপরে আমরা আদিমতার জন্য পরীক্ষা করি। এটি মুশকিল, কারণ এখানে প্রচুর পরিমাণে মামলা এবং বিরক্তি রয়েছে:

  • উচ্চ জন্য n, 0পাই মধ্যে একটি আছে। এটি অগ্রণী শূন্যের সাথে সাবস্ট্রিংগুলিতে নিয়ে যায়। এর সাথে as.bigzউত্পাদন করে NA, যা সরাতে হবে।

  • অনুরূপ নোটে, সাবস্ট্রিং "0"ক্রাশ হবে gmp::factorize, তাই পাশাপাশি মুছে ফেলতে হবে।

  • জন্য n=1, x = 3। যা নিজেই ঠিক আছে, তবে এর bigzউপস্থাপনা 3পুনরাবৃত্তিযোগ্য, তাই sapplyবিভ্রান্ত হয়ে পড়বেন এবং ১ prime টি মূল প্রতিবেদন করবেন। এই লক্ষ্যে আমরা ভেক্টরের সর্বনিম্ন দৈর্ঘ্য xএবং এতে প্রাইমগুলির পরিমাণ গ্রহণ করি।

  • gmp::isprimeবড় সংখ্যাটি নির্ভরযোগ্যভাবে পরিচালনা করতে পারে বলে মনে হয় না। সুতরাং পরিবর্তে আমরা ব্যবহার gmp::factorizeএবং আউটপুট দৈর্ঘ্য চেক 1।

সুতরাং সব মিলিয়ে, আমরা সরিয়ে 0এবং NAথেকে x। আমরা সবগুলিকে গুণিত করি xএবং দৈর্ঘ্যটি পরীক্ষা করি। আমরা ঘটনার সংখ্যা গণনা 1এবং রিটার্ন min(occurences, length(x))


তুমি এখানে! এখন আসুন দেখুন আরও কোনও আকর্ষণীয় সমাধানের সাথে যদি কেউ এর বাইরে চলে যায়। আপনি হতে পারে!

ব্যবহার cumsum(c(1,1,0,1,1,4,1,0,0,3,0,0,2,7,3,1,0,3,0,0,0,0,0,0,4,1,0,6,0,3,2,0,0,0,0,0,0,4,3,3,6,0,4,8,2,5,3,6,0,5))123 বাইট জন্য :) আপনার ভেক্টর পরিবর্তে
: Giuseppe

@ জিউসেপ ভাল লাগল যে 'সংকোচন' অবশ্যই কোনও আইনী সমাধানকে মারবে।
জেএডি

আমি মনে করি হার্ড-কোডিং বা অন্য প্যাকেজ চালু না করে আর এ অসম্ভব, যেহেতু আর-এর কেবলমাত্র 32-বিট ইন্ট রয়েছে, এটি অবশ্যই 50-সংখ্যার পূর্ণসংখ্যার প্রতিনিধিত্ব করবে না।
জিউসেপে

1
হ্যাঁ, আমি এটি সম্পর্কে আরও কিছুটা ভাবতে পারি। 82 হার্ডকোডযুক্ত বাইট
জিউসেপে

0

জেলি , 59 32 বাইট

-27 বাইটস এরিক দি আউটগলফারকে ধন্যবাদ জানায়।

“!⁶⁷¬,6½ạEC.wʠ€Ẉ!+Ẉfṭ¡’Ṿḣ³ẆVQÆPS

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

ব্যাখ্যা

“...’Ṿḣ³ẆVQÆPS

“...’           compressed string that evaluates to first 50 digits of pi (314159...)
     Ṿ          uneval; stringify
      ḣ³        first n characters of the string where n is the first command-line argument
        Ẇ       all sublists
         V      convert all elements to integers
          Q     deduplicate
           ÆP   convert all prime elements to 1 and others to 0
             S  sum

আপনি উত্তর দিয়ে কেন এটি স্প্যাম করলেন?
জাকারি

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