X ফিবোনাচি সংখ্যা পর্যন্ত প্রধান ফিবোনাচি সংখ্যাগুলির গাণিতিক গড়


18

আপনার ফিবোনাচি নাম্বার সম্পর্কে শোনা উচিত ছিল , যাকে প্রায়শই ফিবোনাচি সিকোয়েন্স বলা হয়। এই অনুক্রমের মধ্যে প্রথম দুটি পদ 0 এবং 1 হয় এবং প্রথম দুটি পরে প্রতিটি সংখ্যা পূর্ববর্তী দুটিগুলির যোগফল sum অন্য কথায় F(n) = F(n-1) + F(n-2),।

এখানে প্রথম 20 ফিবোনাচি নম্বর রয়েছে:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

টাস্ক:

একটি পূর্ণসংখ্যা দেওয়া হলে, ফিবোনাচি সিকোয়েন্সের সংখ্যা xপর্যন্ত প্রধান ফিবোনাচি নম্বরের পাটিগণিত গড় (গড়) গণনা করুন x

নিয়মাবলী:

  • এই চ্যালেঞ্জের জন্য ফিবোনাচি ক্রম 0 এবং 1 দিয়ে শুরু হয়
  • 3 < x < 40, কারণ উচ্চতর মানগুলির xফলে কিছু বিশাল সঞ্চালনের সময় বা ওভারফ্লো হতে পারে এবং ছোট মানগুলির কোনও আউটপুট থাকে না
  • 1 টি প্রাথমিক নয় , কারণ এতে কেবল 1 টি বিভাজক রয়েছে
  • পাটিগণিতের গড়টি দশমিকগুলি অন্তর্ভুক্ত করা উচিত, যদি এটির ক্ষেত্রে হয় বা একটি সঠিক ভগ্নাংশ হিসাবে প্রদর্শিত হয়
  • আপনাকে কেবল xইনপুট হিসাবে গ্রহণ করার অনুমতি দেওয়া হয়েছে এবং ইনপুট নেওয়ার জন্য প্রয়োজনীয় কোডটি গণনা করা হয় না (উদাহরণস্বরূপ: যদি আপনার মতো কোনও কিছু প্রয়োজন হয় x = input()তবে বাইটস গণনা করার সময় আপনার এটি বিবেচনায় নেওয়া উচিত নয়)

উদাহরণ:

যাত্রা। 1: জন্য x=10, আউটপুট 5.75কারণ 10th ফিবানচি সংখ্যা, 55এবং মুখ্য ফিবানচি সংখ্যার পর্যন্ত 55হয় 2, 3, 5, 13, তাদের গড় হচ্ছে5.75

উদাহরণ 1 থেকে ব্যাখ্যা অনুসরণ করে, অন্যান্য উদাহরণগুলি হ'ল:

যাত্রা। 2: জন্য x=15, আউটপুট হয়57.5

যাত্রা। 3: এর জন্য x=20, আউটপুটটি 277.428571428571বা অন্য কোনও ঘনিষ্ঠ অনুমান। এই ক্ষেত্রে 277.4286, উদাহরণস্বরূপ, একটি স্বীকৃত মান

যাত্রা। 4: জন্য x=11, আউটপুট হয়22.4

যাত্রা। 5: এর জন্য x=30, আউটপুটটি 60536.4444444444বা অন্য কোনও নিকটবর্তী যেমন, যেমন60536.444


লিডারবোর্ড:


নেতা পরিবর্তন করতে, একটি সংক্ষিপ্ত বৈধ সমাধান জমা দিন। আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত, যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তরটি জিতে। শুভকামনা!


বৃত্তাকার দশমিকের পরিবর্তে ফলাফলটি কোনও ভগ্নাংশ হিসাবে ফিরে আসতে পারে?
মার্টিন এন্ডার

হ্যাঁ অবশ্যই, যতক্ষণ না এটি সঠিক মান। প্রশ্নটি সম্পাদনা করেছেন :))
মিঃ এক্সকোডার

উত্তরটি যদি ভগ্নাংশ হিসাবে দেওয়া হয় তবে ভগ্নাংশটি কি হ্রাস করতে হবে?
DLosc

এটা তোমার উপর. আপনি চাইলে এটি হ্রাস করতে পারেন, তবে আমি এটি প্রয়োজনীয় মনে করি না।
মিঃ এক্সকডার

গৃহীত উত্তর আপডেট করুন।
এরিক দি আউটগল্ফার

উত্তর:


5

আসলে , 10 বাইট

কোড:

R♂F;Mr♂P∩æ

ব্যাখ্যা:

R            # On the input, create the range [1 .. input].
 ♂F          # Map the nth Fibonacci command over it.
   ;M        # Duplicate and get the maximum of the list.
     r       # Create the range [0 .. maximum - 1].
      ♂P     # Map the nth prime operator over each element (zero-indexed).
        ∩    # Intersection of both.
         æ   # Get the mean and implicitly display.

সিপি -৩77 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


বাহ, মাত্র 10 বাইটে এমন একটি কাজ করেছেন। চিত্তাকর্ষক!
মিঃ এক্সকোডার

12

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

s=2.;a=b=c=1
exec"p=2**a%a==2;c+=p;s+=a*p;a,b=b,a+b;"*input()
print s/c

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

পাইথনের এর জন্য দরকারী গাণিতিক বিল্ট-ইন নেই, তাই আমরা হাতে হাতে কাজ করি। কোডটি a,b=b,a+bশুরু থেকে ফিবোনাকির সংখ্যাগুলির মাধ্যমে পুনরাবৃত্তি করে a=b=1

ফার্মার primality পরীক্ষা বেস 2 যেমন মৌলিক সনাক্ত করতে ব্যবহৃত হয় aযেখানে 2^a == 2 (mod a)। যদিও এটি কেবল সম্ভাব্য প্রাইমগুলির জন্য যাচাই করে, কোনও ভুয়া পজিটিভ প্রথম 40 ফিবোনাচি সংখ্যার মধ্যে নেই।

প্রাইমগুলির বর্তমান যোগফল sএবং গণনা cপ্রতিবার কোনও প্রধানের মুখোমুখি হওয়ার সাথে সাথে আপডেট করা হয় এবং তাদের অনুপাত (গড়) শেষ দিকে মুদ্রিত হয়। যেহেতু প্রাইম চেকটি মিস হয় a=2এবং এটি ইনপুট পরিসরে থাকার নিশ্চয়তা দেয়, যোগফল 2 থেকে শুরু হয় এবং ক্ষতিপূরণে গণনা 1 থেকে শুরু হয়।


8

জেলি , 11 বাইট

ÆḞ€ÆPÐfµS÷L

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

কিভাবে এটা কাজ করে

ÆḞ€ÆPÐfµS÷L  Main link. Argument: n (integer)

ÆḞ€          Map the Fibonacci atom over [1, ..., n].
   ÆPÐf      Filter by primality.
       µ     Begin a new chain. Argument: A (array of Fibonacci primes)
        S    Yield the sum of A.
          L  Yield the length of A.
         ÷   Compute the quotient.

11
গণিত বিল্ট-ইনগুলিতে 3 এর একটি শক্ত 2। ফিবোনাচি, চেক। আদিমত্ব, চেক। পাটিগণিত মানে, না।
xnor

আমি স্বীকৃত উত্তরটি পরিবর্তন করেছি, কারণ একটি সংক্ষিপ্ত উত্তর পোস্ট করা হয়েছিল।
মিঃ এক্সকোডার 12

7

গণিত, 38 বাইট

Mean@Select[Fibonacci@Range@#,PrimeQ]&

(* or *)

Mean@Select[Fibonacci~Array~#,PrimeQ]&

ব্যাখ্যা

Mean@Select[Fibonacci@Range@#,PrimeQ]&  
                                     &  (* For input # *)
                      Range@#           (* List {1, 2, 3, ... #} *)
            Fibonacci@                  (* Find the corresponding fibonacci numbers *)
     Select[                 ,PrimeQ]   (* Select the prime terms *)
Mean@                                   (* Take the Mean *)

2
আমি মনে করি আপনি চান #এবং না #-1: ওপি বলে যে 55 হ'ল 10 তম ফিবোনাচি নম্বর, সুতরাং তাদের তালিকাটি 0-সূচিযুক্ত হওয়া উচিত (যেমন সেরা সম্মেলনটিও)। ইনপুট 10এবং 11অপের সাথে আপনার আউটপুটটির তুলনা করুন । ভাগ্যক্রমে এটি আপনাকে তিনটি বাইট সংরক্ষণ করে!
গ্রেগ মার্টিন

আপনি এটিকে &বাদ #দিয়ে প্রতিস্থাপন করতে পারেন x(প্রশ্নটি বলে যে ইনপুট গ্রহণের কোডটি স্কোর হয় না)
ক্যালকুলেটরফলাইন


5

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

lOi:"yy+]vtZp)Ym

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

ব্যাখ্যা

lO     % Push 1, then 0. This way the generated numbers with indices 1, 2, 3, ...
       % will be 1, 1, 2, ... as required
i      % Input n
:"     % Do the following n times
  yy   %   Duplicate top two numbers
  +    %   Add
]      % End
v      % Concatenate all numbers into a column vector
t      % Duplicate
Zp     % Vector of logical values: true for prime numbers, false otherwise
)      % Apply that vector as an index. This keeps only prime numbers
Ym     % Mean. Implicitly display

4

অক্টাভা , 75 71 বাইট

@(n)mean((t=fix(((1+(s=5^.5)).^(x=1:n)-(1-s).^x)/s./2.^x))(isprime(t)))

বেনেটের সূত্র ব্যবহার করে এমন বেনামি ফাংশন । ইনপুট এবং আউটপুট ফাংশন আর্গুমেন্ট আকারে হয়।

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


1
বিনেটের সূত্রটি আকর্ষণীয় ব্যবহারের জন্য +1, বিল্ট-ইন-এর সাথে মিলিত isprimeযা এই চ্যালেঞ্জের জন্য উপযুক্ত।
মিঃ এক্সকোডার

4

ম্যাক্সিমা, 49 বাইট

f(n):=mean(sublist(makelist(fib(x),x,n),primep));

4

প্রোলোগ (এসডাব্লুআই) , 269 264 254 218 বাইট

  • 37 বাইট সংরক্ষণের জন্য ফ্যাটালাইজকে ধন্যবাদ !
  • 9 বাইট সংরক্ষণের জন্য এমিগিনার ধন্যবাদ !

আমি মোটামুটি নিশ্চিত যে আমি আরও কিছু বাইট নিচে গল্ফ করতে পারি।

X/X:-X<3.
N/R:-A is N-1,B is N-2,A/C,B/D,R is C+D.
2^0^0.
C^S^E:-G is C-1,G/M,G^Q^R,(p(M)->S=M+Q,E is R+1;S=Q,E is R).
a(X,S):-X^R^Q,S is R/Q.
p(N):-N*(N-1).
p(2).
p(3).
N*2:-N mod 2=\=0.
N*C:-N mod C=\=0,D is C-1,N*D.

যেমন চালান a(15, R).জন্য এক্স = 15 , আর আউটপুট পরিবর্তনশীল।

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


আরও পঠনযোগ্য সংস্করণ:

fibonacci(1, 1) :- !.
fibonacci(2, 2) :- !.

fibonacci(N, R) :-
  N0 is N - 1,
  N1 is N - 2,
  fibonacci(N0, R1),
  fibonacci(N1, R2),
  R is R1 + R2.

listed(2, 0, 0) :- !.

listed(C, S, Successes) :-
  C0 is C - 1,
  fibonacci(C0, Result),
  listed(C0, S0, S1),
  (
    is_prime(Result)
    ->
      S = Result + S0, Successes is S1 + 1
    ; S = S0, Successes is S1
  ).

f(X, S) :-
  listed(X, R, Q),
  S is R / Q.

is_prime(Num) :- is_prime(Num, Num - 1).

is_prime(2).
is_prime(3).

is_prime(Num, 2) :- Num mod 2 =\= 0, !.

is_prime(Num, C) :-
  Num mod C =\= 0,
  C0 is C - 1,
  is_prime(Num, C0).

1
এসডাব্লুআই প্রোলগে গল্ফিং সোনার (এবং খুব শক্ত), তাই দুর্দান্ত কাজ!
মিঃ এক্সকোডার

আমি নিশ্চিত যে N*C:-পিপিসিজি-তে মাথা ঘোষণার জন্য মঞ্জুরিপ্রাপ্ত জিনিসগুলি আপনার পক্ষে কিছুটা বাইট সংরক্ষণ করতে পারে।
মারাত্মক করুন

@ ফ্যাটালাইজ আমি প্রায় এক সপ্তাহ আগে এই প্রোগ্রামিংয়ের ভাষাটি শিখেছি, তাই আপনি কী বলতে চাইছেন তা আমি নিশ্চিত নই: পি। আপনি প্রতিস্থাপন চাওয়ার কথা বলছেন না p(N,C):-সঙ্গে N*C:-?
আদনান

@ আদনান ঠিক!
ফ্যাটালাইজ করুন

@ ফাতালাইজ ওহহ, এটি সত্যিই ঝরঝরে! ধন্যবাদ :)।
আদনান

3

রাদা , 98 94 93 বাইট

f n{z=0;i=1;j=1;s=0;seq 2,n-1|{|_|c=i+j;i=j;j=c;seq 2,c-1|{z+=1;s+=c}if[c%p>0]()for p}_[s/z]}

এটি এমন একটি ফাংশন যা ফলকে ভাসমান পয়েন্ট নম্বর হিসাবে ফিরিয়ে দেয়।

অবরুদ্ধ সংস্করণ:

function f(n) {
    i = 1
    j = 1
    sum = 0
    num = 0
    seq(2, n-1) | for _ do
        /* calculate next fibonacci number: */
        c = i+j
        i = j
        j = c
        /* if it's prime: */
        {
            num += 1
            sum += c
        /* primality test: */
        } if [c%p > 0]() for p in [seq(2, c-1)]
    done
    return sum/num
}

আপনি কি এর c%p>0পরিবর্তে করতে পারেন c%p!=0?
ক্রিটিকি লিথোস

@ ক্রিতিক্সিলিথোস হ্যাঁ! ধন্যবাদ.
ফারগুসক

3

05 এ বি 1 ই , 13 বাইট

!ÅF¹£DpÏDOsg/

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

ব্যাখ্যা

!ÅF             # get a list of fibonacci numbers up to fac(input)
   ¹£           # take the first input elements of that list
     D          # duplicate
      p         # isprime on the copy
       Ï        # keep the fibonacci numbers which are true in the isprime list
        D       # duplicate the list of fibonacci primes
         O      # sum the list
          s     # swap the other copy to the top of the stack
           g    # get its length
            /   # divide sum by length



2

জাপট , 14 বাইট

ò@MgXÃfj
x /Ul

এটা পরীক্ষা করো


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U
30

ò

সমষ্টি থেকে 0 থেকে পূর্ণসংখ্যার অ্যারে তৈরি করুন U
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]

@   Ã

একটি ফাংশন মাধ্যমে প্রতিটি পূর্ণসংখ্যার পাস।

MgX

Xফিবোনাচি নম্বরটি পান , যেখানে whereX বর্তমান উপাদান রয়েছে।

[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040]

fj

প্রাথমিক fউপাদান পরীক্ষা করা হলে সেই উপাদানগুলিতে অ্যারে ফিল্টার ( )j ) )। ফলস্বরূপে ফলস্বরূপ অ্যারেকে স্পষ্টত অর্পণ করুন U
[2,3,5,13,89,233,1597,28657,514229]

x

যোগফল যোগ করে অ্যারে হ্রাস করুন।
544828

/Ul

অ্যারের দৈর্ঘ্য ( l) দ্বারা ফলাফলকে ভাগ করুন এবং ফলকে সুস্পষ্টভাবে ফলাফল আউটপুট করুন।
60536.444444444445


বাহ, আমি পুরানো প্রশ্নের নতুন উত্তর পছন্দ করি। অন্যান্য গল্ফিং ভাষারও কাছে, সুতরাং +1।
মিঃ এক্সকোডার

1

পার্ল, 91 বাইট

$b=1;map{($a,$b)=($b,$a+$b),$p=("x"x$b)!~/^(.|(..+)\2+)$/,$s+=$b*$p,$c+=$p}2..$x;print$s/$c

মাইডুলো সিউডোপ্রাইম টেস্টটি পাইথনের উত্তরের মতো পার্লের পাশাপাশি কাজ করলে কউল্ডটি 8 বাইট সংক্ষিপ্ত হয়েছে:

$b=1;$s=2;map{($a,$b)=($b,$a+$b),$p=2**$b%$b==2,$s+=$b*$p,$c+=$p}2..$x;print$s/++$c

... তবে এটি পার্ল ইনপুট> 16 এর জন্য ভুল উত্তর দেয়।


1

অ্যাক্সিয়োম, 104 বাইট

g(n)==(y:=x:=r:=0;repeat(x>n=>break;j:=fibonacci(x);x:=x+1;if prime?(j)then(r:=r+j;y:=y+1));y=0=>-1;r/y)

অসমাপ্ত, পরীক্ষার কোড এবং ফলাফল

f(n)==
  y:=x:=r:=0
  repeat
     x>n=>break
     j:=fibonacci(x)
     x:=x+1
     if prime?(j) then(r:=r+j;y:=y+1)
  y=0=>-1
  r/y

(3) -> [[i,g(i)::Float] for i in [1,2,3,10,15,20,11,30,50]]
   Compiling function g with type PositiveInteger -> Fraction Integer
   (3)
   [[1.0,- 1.0], [2.0,- 1.0], [3.0,2.0], [10.0,5.75], [15.0,57.5],
    [20.0,277.4285714285 7142857], [11.0,22.4], [30.0,60536.4444444444 44444],
    [50.0,309568576.1818181818 2]]

আমি মাতমেটিকা, অষ্টাভ ইত্যাদি ভাষাতে প্রবেশের নকল করার চেষ্টা করি, যদি কেউ যদি () ফাংশনটি গণনা না করে তবে তা বাস্তবায়নের জন্য এখানে 62 বাইট খুব ভাল পাওয়া যায়

mean(a:List Float):Any== 
    i:=1; s:=0.0
    repeat  
       if~index?(i,a)then break
       s:=s+a.i
       i:=i+1
    i=1=>[]
    s/(i-1)

--62 bytes
f(x:NNI):Any==mean(select(prime?,[fibonacci(i)for i in 1..x]))

1

জাভাস্ক্রিপ্ট ES6, 137 136 118 113 বাইট

m=

n=>(a=[],(f=x=>a[x]=x<2?x:f(--x)+f(--x))(n),eval((a=a.filter(x=>eval("for(y=x;x%--y;);y==1"))).join`+`)/a.length)

console.log(m(10))
console.log(m(15))
console.log(m(20))
console.log(m(11))
console.log(m(30))


ইতিহাস

118 বাইট

n=>(a=[0,1,1],(f=x=>a[--x]=a[x]||f(x)+f(--x))(n),eval((a=a.filter(x=>eval("for(y=x;x%--y;);y==1"))).join`+`)/a.length)

136 বাইট

n=>(a=[0,1,1],(f=x=>a[--x]=a[x]||f(x)+f(--x))(n),eval((a=a.filter(x=>x>1&&!Array(x).fill().some((i,j)=>j>1&&!(x%j)))).join`+`)/a.length)

137 বাইট

n=>(a=[0,1,1],(f=x=>a[--x]=a[x]||f(x)+f(--x))(n),eval((a=a.filter(x=>{d=x;while(--d>1)if(!(x%d))return 0;return x>1})).join`+`)/a.length)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.