প্রাকৃতিক পাই # 0 - রক


39

লক্ষ্য

এমন একটি প্রোগ্রাম / ফাংশন তৈরি করুন যা কোনও ইনপুট নেয় N, Nএলোমেলো জোড় সংখ্যার তুলনামূলকভাবে প্রাইম হয় কিনা তা পরীক্ষা করে দেখায় sqrt(6 * N / #coprime)

টি এল; ডিআর

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

ব্যাজ

আমরা কী অনুকরণ করছি? ঠিক আছে, দুটি এলোমেলো পূর্ণসংখ্যা অপেক্ষাকৃত প্রধান (যেমন কপ্রিম বা জিসিডি == 1) হ'ল 6/Pi/Pi, তাই পাই গণনা করার একটি প্রাকৃতিক উপায় হ'ল দুটি বালতি (বা মুষ্টিমেয়) পাথর কাটা; তাদের গণনা; দেখুন তাদের জিসিডি 1 হয় কিনা ; পুনরাবৃত্তি করুন। এই একটি কাজ করার পর দম্পতি সময়ের অনেক, sqrt(6.0 * total / num_coprimes)প্রতি থাকে Pi। পোস্ট-অ্যাপোক্যালিপটিক বিশ্বে স্কোয়ার-রুট গণনা করা যদি আপনাকে নার্ভাস করে তোলে তবে চিন্তা করবেন না! তার জন্য নিউটনের পদ্ধতি রয়েছে

আমরা কীভাবে এটি অনুকরণ করছি?

  • ইনপুট নিন N
  • নিম্নলিখিত Nসময়গুলি করুন:
    • অবিচ্ছিন্নভাবে এলোমেলো ধনাত্মক পূর্ণসংখ্যার উত্পাদন iএবং andj
    • সঙ্গে 1 <= i , j <= 10^6
    • যদি gcd(i , j) == 1:result = 1
    • অন্য: result = 0
  • Nফলাফলের যোগফলটি নিন ,S
  • প্রত্যাবর্তন sqrt(6 * N / S)

এখানে চিত্র বর্ণনা লিখুন

সবিস্তার বিবরণী

  • ইনপুট
    • নমনীয়, মানক কোনও উপায়ে ইনপুট নিন (যেমন ফাংশন প্যারামিটার, এসটিডিআইএন) এবং কোনও মানক বিন্যাসে (যেমন স্ট্রিং, বাইনারি)
  • আউটপুট
    • নমনীয়, মানক কোনও উপায়ে আউটপুট দিন (যেমন রিটার্ন, প্রিন্ট)
    • সাদা স্থান, অনুসরণ এবং শীর্ষস্থানীয় সাদা স্থান গ্রহণযোগ্য
    • যথার্থতা, দয়া করে সঠিকতার জন্য কমপক্ষে 4 দশমিক স্থান সরবরাহ করুন (যেমন 3.1416)
  • স্কোরিং
    • সবচেয়ে কম কোড জয়!

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

আপনার আউটপুট এগুলির সাথে সামঞ্জস্য হতে পারে না, এলোমেলো সুযোগের কারণে। তবে গড়ে, আপনার দেওয়া মানটির জন্য আপনার এই যথার্থতাটি পাওয়া উচিত N

Input     ->  Output 
-----         ------
100       ->  3.????
10000     ->  3.1???
1000000   ->  3.14??
code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

1
আমাদের উত্তরটির জন্য কী কাজ করা দরকার N = 1000000বা প্রোগ্রামটি যদি Nখুব বড় হয় তবে স্ট্যাকের ওভারফ্লোটি যদি ফিরে আসে তবে তা ঠিক আছে ?
ফ্যাটালাইজ করুন

@ ফ্যাটালাইজ করুন যদি এটি ভাষার সীমাবদ্ধতা হয় তবে অবশ্যই। অন্যথায়, আপনি পরিচালনা করা প্রয়োজন N=10^6
ননলাইনফর্ট


2
লক্ষ্যটি বিভ্রান্তিমূলক, এটিতে বলা হয় যে কেবলমাত্র এক জোড়া পূর্ণসংখ্যার পরীক্ষা করা হয়।
ব্যবহারকারী 253751

1
উত্পন্ন এলোমেলো সংখ্যার উপরের সীমাটি ঠিক 1000000 হওয়া দরকার? বৃহত্তর উপরের সীমা গ্রহণযোগ্য হবে?
Sok

উত্তর:


12

এপিএল, 23 বাইট

{.5*⍨6×⍵÷1+.=∨/?⍵2⍴1e6}

ব্যাখ্যা:

  • ?⍵2⍴1e6: পরিসীমাটিতে এলোমেলো সংখ্যার 2-বাই-⍵ ম্যাট্রিক্স তৈরি করুন [1..10 6 ]
  • 1+.=∨/: প্রতিটি জুটির জিসিডি পান এবং দেখুন 1 টির সমান কত। এটি এস গণনা করে S.
  • .5*⍨6×⍵÷: (6 × ⍵ ÷ এস) 0.5

11

জেলি , 20 18 16 বাইট

-২ বাইটস @ পিটু ১৯৯৮ এর জন্য ধন্যবাদ (দু'বারেরও ċ1কম সংখ্যক স্থানে চেইন এবং ব্যবহার গণনা 1 গুলি <2S)

-2 বাইটস @ ডেনিসকে ধন্যবাদ (চেইন এড়ানোর জন্য নমুনা দেওয়ার আগে একাধিকবার 1e6 পুনরাবৃত্তি করুন)

Ḥȷ6xX€g2/ċ1÷³6÷½

(এলোমেলো ফাংশনের কারণে অত্যন্ত ধীর)

কিভাবে?

Ḥȷ6xX€g2/ċ1÷³6÷½ - Main link: n
 ȷ6              - 1e6
   x             - repeat
Ḥ                -     double, 2n
    X€           - random integer in [1,1e6] for each
       2/        - pairwise reduce with
      g          -     gcd
         ċ1      - count 1s
           ÷     - divide
            ³    - first input, n
             6   - literal 6
              ÷  - divide
               ½ - square root

TryItOnline


ḤRµȷ6Xµ€g2/ċ1÷³6÷½2 বাইট সংরক্ষণ ( ȷ6এক নীলাদে 10 ^ 6, ċ1গণনাগুলি)
পূর্কাকুডারী

আহ আমি কীভাবে এটিকে শৃঙ্খলাবদ্ধ করতে চেষ্টা করতে পারি না (কয়েকটি জিনিস চেষ্টা করে দেখেছি) এবং গণনাটি 1 টি কৌশলটি ভুলে গিয়েছি - ধন্যবাদ (আমি মনে করি ȷ²যে এর চেয়ে সামান্য ক্ষুদ্রতম দ্রুত ȷ6)
জোনাথন অ্যালান

হতে পারে. এখন যেহেতু আমি এটির কথা ভাবছি, ȷ²দুটি লিঙ্ক হওয়ার কারণে এখানে কোনও ক্ষতি হয় না, তবে অতিরিক্ত লিঙ্ক বা ¤কিছু ব্যবহারের ক্ষেত্রে প্রয়োজন হয়
পূর্কাকাডারী

1
Ḥȷ6xX€এলোমেলো নমুনা জন্য কাজ করা উচিত।
ডেনিস

9

পাইথন 2, 143 140 132 124 122 124 122 বাইট

আমি গল্ফ করার চেষ্টা করার পরে বেশ কিছুদিন হয়ে গেছে, তাই আমি এখানে কিছু মিস করতে পারি! আমি এটি সংক্ষিপ্ত করার সাথে সাথে আপডেট করা হবে।

import random as r,fractions as f
n,s=input(),0
k=lambda:r.randrange(1e6)+1
exec's+=f.gcd(k(),k())<2;'*n
print(6.*n/s)**.5

আমাকে এখানে পরীক্ষা!

জোনাথন অ্যালানকে দ্বি-বাইট সংরক্ষণের জন্য ধন্যবাদ :)


ওপি অনুসারে 1 <= i , j <= 10^6, সুতরাং আপনার ব্যবহার করা দরকার randrange(1,1e6+1)
mbomb007

1
এছাড়াও, ভাষার নামের মধ্যে repl.it লিঙ্কটি পাওয়া সত্যিই আশ্চর্যজনক। ল্যাং নামের একটি লিঙ্কটি যদি কিছু থাকে তবে ভাষার হোম পৃষ্ঠায় থাকা উচিত। আপনার কোডের নীচে একটি পৃথক লিঙ্ক হিসাবে আপনার repl.it লিঙ্কটি রাখুন।
mbomb007

@ mbomb007 ভাল কথা, আমি এটি ঠিক করেছি :) কিছুক্ষণ হয়ে গেল!
কেদে

1
k=lambda:r.randrange(1e6)+1দুটি বাইট সংরক্ষণ করে
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান ভাল ক্যাচ, ধন্যবাদ!
কেডে

8

গণিত, 49 48 51 বাইট

এক বাইট সংরক্ষিত এবং এক বাগ ধন্যবাদ সংশোধন @ LegionMammal978

(6#/Count[GCD@@{1,1*^6}~RandomInteger~{2,#},1])^.5&

1
আপনি একটি বাইট সংরক্ষণ করতে পারেন:(6#/Count[GCD@@1*^6~RandomInteger~{2,#},1])^.5&
LegionMammal978

1
এছাড়াও, 1*^6উল্লেখ করা আবশ্যক {1,1*^6}তা নিশ্চিত করার জন্য আমি , ≠ 0.
LegionMammal978

8

আর, 103 99 95 99 98 94 বাইট

সম্ভবত কিছুটা গল্ফ করা যেতে পারে। জন্য একটি alias নির্ধারণ করে @ Antoine-কোষ কারণে 4 বাইট, এবং অন্য 4 বাইট কেটে sampleব্যবহার ^.5পরিবর্তে sqrt, এবং 1e6পরিবর্তে 10^6। যোগ করা হয়েছে 4 বাইট তা নিশ্চিত করার জন্য নমুনা iএবং jসত্যিই অভিন্ন নয়। এক বাইট সরানো হয়েছে পরে আমি বুঝতে পারি যে 6*N/sum(x)হিসাবে একই 6/mean(x)। 4 টি বাইট সংরক্ষণ করার pryr::fপরিবর্তে ব্যবহৃত হয় function(x,y)

N=scan()
s=sample
g=pryr::f(ifelse(o<-x%%y,g(y,o),y))
(6/mean(g(s(1e6,N,1),s(1e6,N,1))==1))^.5

নমুনা আউটপুট:

N=100     -> 3.333333
N=10000   -> 3.137794
N=1000000 -> 3.141709

1
আপনি সহজভাবে ব্যবহার করতে পারেন sample(10^6,N)। এটি কেবল খাটো নয়, এটি আরও বেশি দক্ষ।
asac - মনিকা পুনরায় ইনস্টল করুন

আমি ভুল হতে পারি, তবে ঠিক মতো ইউনিফর্ম পূর্ণসংখ্যার জন্য নমুনা প্রতিস্থাপন = টি দিয়ে ব্যবহার করা উচিত নয়। উদাহরণস্বরূপ sample(10,10)1:10 এ সমস্ত সংখ্যা ফেরত দেওয়ার গ্যারান্টিযুক্ত, যেখানে sample(10,10,T)একটি এলোমেলো নির্বাচন তৈরি হবে যেখানে সংখ্যাগুলি পুনরাবৃত্তি করা যায়।
মিকিটি

@ মিকিটি আপনি একেবারে সঠিক, আমি নিজে কয়েক মিনিট আগে এটি উপলব্ধি করেছি। আমি এই পরিস্থিতিতে গাণিতিকভাবে কীভাবে কাজ করে তা পুরোপুরি নিশ্চিত নই - যতদূর আমি বলতে পারি উভয় পদ্ধতিই প্রায় সমানভাবে নির্ভুল। এই তথ্য যুক্ত করতে আমি আমার পোস্টটি সম্পাদনা করব।
rturnbull

এন << 10 ^ 6 হলে উভয় পদ্ধতি সমানভাবে নির্ভুল। নির্বিচারে বিগ এন পরিচালনা করতে, আপনাকে প্রতিস্থাপনের সাথে নমুনা করতে হবে, ভাল ক্যাচ।
asac - মনিকা

7

আসলে, 19 বাইট

`6╤;Ju@Ju┤`nkΣß6*/√

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

ব্যাখ্যা:

`6╤;Ju@Ju┤`nkΣß6*/√
`6╤;Ju@Ju┤`n         do this N times:
 6╤;                   two copies of 10**6
    Ju                 random integer in [0, 10**6), increment
      @Ju              another random integer in [0, 10**6), increment
         ┤             1 if coprime else 0
            kΣ       sum the results
              ß      first input again
               6*    multiply by 6
                 /   divide by sum
                  √  square root

আমি, জে 0
এএসইএজিজি

1
পছন্দ করেছেন আপনি যদি ব্যাখ্যাটি পড়েন তবে এটি বলবে যে এলোমেলো মানগুলি [0, 10 ** 6) থেকে নির্বাচিত হয়, তারপরে বর্ধিত হয়।
মেগো

7

এমএটিএল , 22 বাইট

1e6Hi3$YrZ}Zd1=Ym6w/X^

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

1e6      % Push 1e6
H        % Push 2
i        % Push input, N
3$Yr     % 2×N matrix of uniformly random integer values between 1 and 1e6
Z}       % Split into its two rows. Gives two 1×N arrays
Zd       % GCD, element-wise. Gives a 1×N array
1=       % Compare each entry with 1. Sets 1 to 0, and other values to 0
Ym       % Mean of the array
6w/      % 6 divided by that
X^       % Square root. Implicitly display


6

স্কালা, 149 126 বাইট

val& =BigInt
def f(n: Int)={math.sqrt(6f*n/Seq.fill(n){val i,j=(math.random*99999+1).toInt
if(&(i).gcd(&(j))>1)0 else 1}.sum)}

ব্যাখ্যা:

val& =BigInt                //define & as an alias to the object BigInt, because it has a gcd method
def f(n:Int)={              //define a method
  math.sqrt(                //take the sqrt of...
    6f * n /                //6 * n (6f is a floating-point literal to prevent integer division)
    Seq.fill(n){            //Build a sequence with n elements, where each element is..
      val i,j=(math.random*99999+1).toInt //take 2 random integers
      if(&(i).gcd(&(j))>1)0 else 1        //put 0 or 1 in the list by calling
                                          //the apply method of & to convert the numbers to
                                          //BigInt and calling its bcd method
    }.sum                   //calculate the sum
  )
}

আমি <3 স্কাল! বিশেষত, কারণ এটির মাঝে মাঝে সত্যই ব্যাখ্যা প্রয়োজন needs
রোমান গ্রাফ

@ RomanGräf সৎ হবে, শুধুমাত্র কিছু আমি মনে করি অস্পষ্ট হতে পারে 6f, Seq.fillএবং math.random
করভাস_192

5

রেকেট 92 বাইট

(λ(N)(sqrt(/(* 6 N)(for/sum((c N))(if(= 1(gcd(random 1 1000000)(random 1 1000000)))1 0)))))

Ungolfed:

(define f
  (λ (N)
    (sqrt(/ (* 6 N) 
            (for/sum ((c N))
              (if (= 1
                     (gcd (random 1 1000000)
                          (random 1 1000000)))
                  1 0)
              )))))

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

(f 100)
(f 1000)
(f 100000)

আউটপুট:

2.970442628930023
3.188964020716403
3.144483068444827

5

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

n=>(n*6/(r=_=>Math.random()*1e6+1|0,g=(a,b)=>b?g(b,a%b):a<2,q=n=>n&&g(r(),r())+q(n-1))(n))**.5

ES6 সংস্করণটি হ'ল 99 বাইট, তবে ES7 এক্সপেনসেন্টেশন অপারেটর **5 বাইট ওভার সাশ্রয় করে Math.sqrt

Ungolfed

function pi(n) {
  function random() {
    return Math.floor(Math.random() * 1e6) + 1;
  }
  function gcd(a, b) {
    if (b == 0)
      return a;
    return gcd(b, a % b);
  }
  function q(n) {
    if (n == 0)
      return 0;
    return (gcd(random(), random()) == 1 ? 1 : 0) + q(n - 1));
  }
  return Math.sqrt(n * 6 / q(n));
}

উম্বল্ফড সংস্করণে gcdফাংশনটি কল করেg
রোমান গ্রাফ

r=_=>যে কোড বা একটি অঙ্কন?
14

n=>(n*6/(r=_=>Math.random()*1e6,g=(a,b)=>b?g(b,a%b):a>-2,q=n=>n&&g(~r(),~r())+q(n-1))(n))**.51 বি সংক্ষিপ্ত
l4m2

n=>(n*6/(q=_=>n--&&q(r=_=>Math.random()*1e6)+g(~r(),~r()))(g=(a,b)=>b?g(b,a%b):a>-2))**.5
l4m2

5

পিএইচপি, 82 77 74 বাইট

for(;$i++<$argn;)$s+=2>gmp_gcd(rand(1,1e6),rand(1,1e6));echo(6*$i/$s)**.5;

এভাবে চালান:

echo 10000 | php -R 'for(;$i++<$argn;)$s+=2>gmp_gcd(rand(1,1e6),rand(1,1e6));echo(6*$i/$s)**.5;' 2>/dev/null;echo

ব্যাখ্যা

টিনে যা বলে তা করে Does এর জন্য পিএইচপি_জিএমপি প্রয়োজন gcd

বদলান

  • ব্যবহার করে 3 বাইট সংরক্ষণ করা হয়েছে $argn

4

পার্ল, 64 বাইট

sub r{1+~~rand 9x6}$_=sqrt$_*6/grep{2>gcd r,r}1..$_

কমান্ড লাইন বিকল্পের প্রয়োজন -pMntheory=gcd, 13 হিসাবে গণনা করা। ইনপুট স্টিডিন থেকে নেওয়া হয়েছে।

নমুনা ব্যবহার

$ echo 1000 | perl -pMntheory=gcd pi-rock.pl
3.14140431218772

4

আর, 94 বাইট

N=scan();a=replicate(N,{x=sample(1e6,2);q=1:x[1];max(q[!x[1]%%q&!x[2]%%q])<2});(6*N/sum(a))^.5

তুলনামূলকভাবে ধীর হলেও এখনও কাজ করে। 2 বার এলোমেলো সংখ্যার (1 থেকে 1e6 পর্যন্ত) ফাংশনটির অনুলিপি করুন এবং তাদের জিসিডি 2 এর চেয়ে কম কিনা তা পরীক্ষা করে ( আমার একটি পুরানো জিসিডি ফাংশন ব্যবহার করে )।


1
আপনি যদি সতর্কতা সম্পর্কে উদ্বিগ্ন না হন, 1:xকাজ করবে।
মিকিটি

4

পাওয়ারশেল ভি 2 +, 118 114 বাইট

param($n)for(;$k-le$n;$k++){$i,$j=0,1|%{Random -mi 1};while($j){$i,$j=$j,($i%$j)}$o+=!($i-1)}[math]::Sqrt(6*$n/$o)

ইনপুট নেয় $n, সমান forহওয়া অবধি একটি লুপ শুরু করে ( প্রথম লুপটি প্রবেশের পরে অন্তর্নিহিত )। প্রতিটি পুনরাবৃত্তির, নতুন পেতে সংখ্যার এবং ( nimum পতাকা নিশ্চিত আমরা করছি এবং কোন সর্বাধিক পতাকা আপ করতে পারবেন যা যেহেতু এটি চেয়ে বড় ব্যাপার ওপি দ্বারা অনুমোদিত হয়, )।$k$n$k=0Random$i$j-mi1>=1[int]::MaxValue10e6

তারপরে আমরা একটি জিসিডি whileলুপে যাই । তারপর, এতক্ষণ GCD হিসাবে 1, $oবৃদ্ধি পায়। forলুপের শেষে , আমরা একটি সাধারণ [math]::Sqrt()কল করি যা পাইপলাইনে ছেড়ে যায় এবং আউটপুট অন্তর্ভুক্ত।

10000আমার year 1 বছরের পুরানো কোর আই 5 ল্যাপটপে ইনপুট নিয়ে চালাতে প্রায় 15 মিনিট সময় নেয় ।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\natural-pi-0-rock.ps1 100
3.11085508419128

PS C:\Tools\Scripts\golfing> .\natural-pi-0-rock.ps1 1000
3.17820863081864

PS C:\Tools\Scripts\golfing> .\natural-pi-0-rock.ps1 10000
3.16756133579975

3

জাভা 8, 164 151 বাইট

n->{int c=n,t=0,x,y;while(c-->0){x=1+(int)(Math.random()*10e6);y=1+(int)(Math.random()*10e6);while(y>0)y=x%(x=y);if(x<2)t++;}return Math.sqrt(6f*n/t);}

ব্যাখ্যা

n->{
    int c=n,t=0,x,y;
    while(c-->0){                          // Repeat n times
        x=1+(int)(Math.random()*10e6);     // Random x
        y=1+(int)(Math.random()*10e6);     // Random y
        while(y>0)y=x%(x=y);               // GCD
        if(x<2)t++;                        // Coprime?
    }
    return Math.sqrt(6f*n/t);              // Pi
}

পরীক্ষার জোতা

class Main {
    public static interface F{ double f(int n); }
    public static void g(F s){
        System.out.println(s.f(100));
        System.out.println(s.f(1000));
        System.out.println(s.f(10000));
    }
    public static void main(String[] args) {
        g(
            n->{int c=n,t=0,y,x;while(c-->0){x=1+(int)(Math.random()*10e6);y=1+(int)(Math.random()*10e6);while(y>0)y=x%(x=y);if(x<2)t++;}return Math.sqrt(6f*n/t);}
        );
    }
}

হালনাগাদ

  • -13 [16-10-05] @ টিএনটি এবং পরীক্ষার জোতা যুক্ত করার জন্য ধন্যবাদ

1
আপনার প্রথমদিকে প্রথম বন্ধনী প্রয়োজন নেই n, t+=1হয়ে উঠতে পারে t++, আপনি আপনার intঘোষণাকে এক লাইনে ঘন করতে পারেন , অর্থাত্ int c=n,t=0,x,y;, এবং !=0(আমার মনে হয়) হয়ে যেতে পারে >0। এটি সামগ্রিকভাবে 12 বাইট সংরক্ষণ করতে হবে। যদিও এটি x এবং y এর GCD সন্ধান করার একটি ঝরঝরে উপায়।
টিএনটি


1

ভাজা, 84 89

r[]:=random[10^6]+1
g=n=eval[input[1]]
for a=1to n
g=g-1%gcd[r[],r[]]
println[(6*n/g)^.5]

আমি ভাগ্যবান: ছ = ঢ = ... সংরক্ষণ উপর একটি বাইট ছ = 0 এন = ... ; এবং 1% গিসিডি () (0,1) বনাম (1,0) দেয় যাতে আমি বিয়োগ করতে পারি। এবং দুর্ভাগ্য: এন উপস্থাপিত এবং একটি ব্যবহৃত হয় কারণ লুপ ভেরিয়েবল এবং তাদের সীমানা স্থানীয় এবং লুপের বাইরে অপরিজ্ঞাত।

বাগাড়ম্বরপূর্ণ

r[] := random[10^6] + 1     // function. Frink parses Unicode superscript!
g = n = eval[input[""]]     // input number, [1] works too
for a = 1 to n              // repeat n times
   g = g - 1%gcd[r[], r[]]  // subtract 1 if gcd(i, j) > 1
println[(6*n/g)^.5]         // ^.5 is shorter than sqrt[x], but no super ".", no ½

এটি 90 বাইট এবং 88 টি চর ...?
ক্যালকুলেটরফলাইন

এটি ধরার জন্য ধন্যবাদ আমি নিউলাইনগুলি গণনা করি নি, এবং ², only কেবলমাত্র 1 বাইট ³ বেশি। আমি এটিকে 89 বাইটে স্থির করেছি কোনও চূড়ান্ত নিউলাইন নেই।
maybeso

আপনি ভার্বোজ কোডটি স্থির করেন নি।
ক্যালকুলেটরফলাইন

স্পেসিং, কোট এবং নম্বর ইত্যাদির সাথে এটি কোনওভাবে একের ম্যাচ নয়
মায়বেসো


1

পাইট , 37 35 বাইট

←Đ0⇹`25*⁶⁺Đ1⇹ɾ⇹1⇹ɾǤ1=⇹3Ș+⇹⁻łŕ⇹6*⇹/√

ব্যাখ্যা:

←Đ                                              Push input onto stack twice
  0                                             Push 0
   ⇹                                            Swap top two elements of stack
    `                      ł                    Repeat until top of stack is 0
     25*⁶⁺Đ1⇹ɾ⇹1⇹ɾ                              Randomly generate two integers in the range [1,10^6]
                  Ǥ1=                           Is their GCD 1?
                     ⇹3Ș                        Reposition top three elements of stack
                        +                       Add the top 2 on the stack
                         ⇹⁻                     Swap the top two and subtract one from the new top of the stack
                            ŕ                   Remove the counter from the stack
                             ⇹                  Swap the top two on the stack
                              6*                Multiply top by 6
                                ⇹               Swap top two
                                 /              Divide the second on the stack by the first
                                  √             Get the square root

1

জে, 27 বাইট

3 :'%:6*y%+/(1:=?+.?)y#1e6'

ব্যাখ্যা:

3 :'                      '  | Explicit verb definition
                     y#1e6   | List of y copies of 1e6 = 1000000
            (1:=?+.?)        | for each item, generate i and j, and test whether their gcd is 1
          +/                 | Sum the resulting list
      6*y%                   | Divide y by it and multiply by six
    %:                       | Square root

এর 3.14157জন্য বেশ ভাগ্যবান N = 10000000, যা 2.44কয়েক সেকেন্ড সময় নিয়েছে ।


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