ফিবোনাচি এক্সটেনশনস


11

এই চ্যালেঞ্জের জন্য, আপনাকে কয়েকটি সংখ্যার যোগফলের ফলাফল আউটপুট করতে হবে। এই সংখ্যাগুলি কি? ঠিক আছে, আপনাকে ইনপুট দেওয়া হবে, ( a, b), যা পূর্ণসংখ্যাগুলি (ধনাত্মক, negativeণাত্মক, বা শূন্য) a != b, এবং a < b, এবং প্রতিটি পূর্ণসংখ্যার মধ্যে aএবং b(সেগুলি সহ) ফাইবোনাকির সংখ্যা অনুসারে এক্সপোজার থাকবে। এটি বিভ্রান্তিকর তাই এখানে একটি উদাহরণ:

Input: (-2, 2)
Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 =
          -2  +    -1   +   0  +   1  +   32 = 30

প্রদত্ত যে প্রথম ফিবোনাচি সংখ্যাটি প্রতিনিধিত্ব করে f(0), সূত্রটি হ'ল:

a**f(0) + ... + b**f(b-a+1) 

ইনপুট, প্রসেসিং, আউটপুট

উপরেরটি স্পষ্ট করার জন্য, এখানে কয়েকটি পরীক্ষার কেস, ইনপুট প্রক্রিয়াজাতকরণ এবং প্রত্যাশিত ফলাফলগুলি:

Input: (1, 2)
Processing: 1**1 + 2**1
Output: 3

Input: (4, 8)
Processing: 4**1 + 5**1 + 6**2 + 7**3 + 8**5
Output: 33156

Input: (-1, 2)
Processing: -1**1 + 0**1 + 1**2 + 2**3
Output: 8

Input: (-4, -1)
Processing: -4**1 + -3**1 + -2**2 + -1**3
Output: -4

বিধি

  • কোনও স্ট্যান্ডার্ড লুফোলস অনুমোদিত নয়

  • ফিবোনাচি সিরিজ অনুসারে এক্সপ্রেশনগুলি অবশ্যই ক্রমযুক্ত হতে হবে

  • উপরোক্ত পরীক্ষার ক্ষেত্রে কোডটি অবশ্যই কাজ করবে

  • কেবলমাত্র আউটপুট ফেরত দেওয়া দরকার

বিজয়ী মানদণ্ড

সবচেয়ে কম কোড জয়!


সুতরাং 0এখানে ফাইবোনাকি সংখ্যা অন্তর্ভুক্ত করা হয় না?
ফ্লিপট্যাক

0 কোনও ফিবোনাচি নম্বর নয় তবে
ইনপুটটির

6
33165 বা 33156?
নীল

@ নিল আমি মনে করি আপনি ঠিক বলেছেন
অ্যান্টনি ফ্যাম

এই উপরে "একটি চ (0) ... + খ চ (খ-একটি + 1)" এটা ভুল, একটি = 1 ও b = 2 এটি হবে 1 উদাহরণস্বরূপ চ (0) +2 চ (2 )। আমি মনে করি একটি f (0) + ... + বি হবে চ (বা) হবে; এখানে f (0) = 0 নয় 1
রোজলুপি

উত্তর:


2

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

ŸDg!ÅFsmO

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

Ÿ         # Push [a, ..., b].
 Dg!      # Calculate ([a..b].length())! because factorial grows faster than fibbonacci...
    ÅF    # Get Fibonacci numbers up to FACTORIAL([a..b].length()).
      s   # Swap the arguments because the fibb numbers will be longer.
       m  # Vectorized exponentiation, dropping extra numbers of Fibonacci sequence.
        O # Sum.

aএবং b(ইজি [a..b].length() > 25) এর মধ্যে বৃহত্তর তাত্ক্ষণিক জন্য টিআইওতে কাজ করে না ।

তবে মনে হয় এটি এখানে গড় উত্তরের চেয়ে বড় সংখ্যার জন্য কাজ করবে।

অপ্রতুল, কারণ এটি ফাইবোনাকির সিক্যুয়েন্সটি গণনা করে n!, যা উত্তরটি গননা করার জন্য প্রয়োজনের চেয়ে বেশি, যেখানে nসিকোয়েন্সটির দৈর্ঘ্য a..b


5

গণিত, 38 বাইট 37 বাইট 31 বাইট

Sum[x^Fibonacci[x-#+1],{x,##}]&

এটি ম্যাথমেটিকাকে কেবল রাহনেম 1 এর উত্তর answer নীচে আমার মূল সমাধানটি দেওয়া হল:

Tr[Range@##^Fibonacci@Range[#2-#+1]]&

ব্যাখ্যা:

##সমস্ত আর্গুমেন্টের ক্রম #প্রতিনিধিত্ব করে, প্রথম যুক্তি #2উপস্থাপন করে, দ্বিতীয় যুক্তিকে উপস্থাপন করে। যখন দুটি যুক্তি সহ ডাকা হবে aএবং b, Range[##]তালিকাটি দেবে {a, a+1, ..., b}এবং Range[#2-#+1]একই দৈর্ঘ্যের তালিকা দেবে {1, 2, ..., b-a+1}। যেহেতু Fibonacciহয় Listable, Fibonacci@Range[#2-#+1]প্রথম তালিকায় দেব b-a+1ফিবানচি নম্বর। যেহেতু Powerহয়Listable , সমান দৈর্ঘ্য দুটি তালিকা তে এটি কলিং এটি উপর থ্রেড হবে তালিকা। তারপরে Trযোগফল নেয়।

সম্পাদনা করুন: মার্টিন ইন্ডারকে ধন্যবাদ 1 বাইট সংরক্ষিত


3
আপনি ব্যবহার করতে পারেন Range@##
মার্টিন এন্ডার

1
এখনকার মতো প্রাসঙ্গিক নয়, তবে আসল পদ্ধতিটি 3 বাইটে উন্নত করা যেতে পারে Tr[(r=Range@##)^Fibonacci[r-#+1]]&
গ্রেগ মার্টিন

Rangeদুবার ব্যবহার করা একটি লাল পতাকা হওয়া উচিত ছিল। ধন্যবাদ!
নেজিনিসিস

5

পাইথন , 49 বাইট

একটি recursive ল্যামডা যা লাগে aএবং b(আপনি Fibonacci প্রথম দুটি সংখ্যার সেটআপ করতে পারেন, পৃথক আর্গুমেন্ট হিসাবে xএবং yযাই হোক না কেন আপনার চাই - ইচ্ছাকৃত নয়, কিন্তু একটা চমৎকার বৈশিষ্ট্য):

f=lambda a,b,x=1,y=1:a<=b and a**x+f(a+1,b,y,x+y)

এটি অনলাইন চেষ্টা করুন!(পরীক্ষার স্যুট অন্তর্ভুক্ত)

গল্ফিং পরামর্শ স্বাগত জানাই।


কেন -~aএবং সহজভাবে না a+1? আমি মনে করি -~aযন্ত্র নির্ভর।
তিতাস

4

পার্ল 6 , 32 30 বাইট

{sum $^a..$^b Z**(1,&[+]...*)}

$^aএবং $^bফাংশন দুটি যুক্তি হয়; $^a..$^bথেকে সংখ্যার পরিসর $^aথেকে $^b, যা exponentiation সঙ্গে জিপ করা হয় Z**ফিবানচি ক্রম সঙ্গে, 1, &[+] ... *

দুটি বাইট শেভ করার জন্য ব্র্যাড গিলবার্টকে ধন্যবাদ।


(1,&[+]...*)একটি বাইট ছোট, এবং পরে স্থান Z**প্রয়োজন হয় না।
ব্র্যাড গিলবার্ট b2gills

@ ব্র্যাডগিলবার্টব 2 গিলস কুল, আমার কোনও ধারণা ছিল না যে ফিবোনাচি ক্রমটি এভাবে প্রকাশ করা যেতে পারে।
শান

আসলে এটি কাজ করে কারণ &infix:<+>0,1 বা 2 টি আর্গুমেন্ট গ্রহণ করতে পারে। ( &[+]লেখার একটি ছোট উপায় &infix:<+>) way WhateverCode * + *ঠিক 2 আর্গুমেন্ট গ্রহণ করে। ( &[0]() == 0সুতরাং আপনার 1ক্রমটি শুরু করার জন্য সেখানে থাকতে হবে)
ব্র্যাড গিলবার্ট ১৯



3

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

f=(a,b,x=1,y=1)=>a<=b&&a**x+f(a+1,b,y,x+y)

@ ফ্লিপট্যাকের দুর্দান্ত পাইথন উত্তরের সোজা বন্দর port


ভাল, জাভাস্ক্রিপ্ট এমনকি আরও খাটো পরিণত! :)
ফ্লিপট্যাক

3

হাস্কেল, 35 বাইট

f=scanl(+)1(0:f);(?)=sum.zipWith(^)

ব্যবহার:

$ ghc fibexps.hs -e '[4..8]?f'
33156

আপনি oযেমন একটি ইনফিক্স অপারেটরে রূপান্তর করতে পারেন a#b=sum...
নিমি

ইনফিক্সকে একটি ... বি এর মতো বিবেচনা করেছে তবে
অ্যানারি

আরও অনেক উত্তর দুটি পৃথক যুক্তি গ্রহণ করে, তাই আমি মনে করি এটি ঠিক আছে।
নিমি

ইতিমধ্যে Alrightie, এটি আমাদের ECMAscript7 ল্যাম্বডা সমতুল্য করে তুলেছে। কিন্তু আমরা ফিড করার অনুমতি দেওয়া হয় যদি (a,b)যেমন a?bতাহলে কেন আমরা অবিলম্বে যেমন প্রস্তুত করতে অনুমতি দেওয়া হয় না [a..b]?fসম্মুখের (?)=sum.zipWith(^)?
রোমান সিজবোরা

আমি মনে করি এটি অনেক দূরে চলে যায়। ইনপুটটি দুটি সংখ্যার (এক জোড়া হিসাবে অগত্যা নয়, দুটি পৃথক যুক্তি হবে) তবে আপনি সংখ্যার একটি তালিকা এবং আপনার মূল ফাংশনে একটি ফাংশন খাওয়াচ্ছেন।
নিমি

2

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

&:ll&Gw-XJq:"yy+]JQ$h^s

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

&:      % Binary range between the two implicit inputs: [a a+1 ... b] 
ll      % Push 1, 1. These are the first two Fibonacci numbers
&G      % Push a, b again
w-      % Swap, subtract: gives b-a
XJ      % Copy to cilipboard J
q:      % Array [1 2 ... b-a-1]
"       % For each (repeat b-a-1 times)
  yy    %    Duplicate the top two numbers in the stack
  +     %    Add
]       % End
J       % Push b-a
Q       % Add 1: gives b-a+1
$       % Specify that the next function takes b-a+1 inputs
h       % Concatenate that many elements (Fibonacci numbers) into a row vector
^       % Power, element-wise: each entry in [a a+1 ... b] is raised to the
        % corresponding Fibonacci number
s       % Sum of array. Implicitly display

1

আর, 51 বাইট

একটি বেনামী ফাংশন।

function(a,b)sum((a:b)^numbers::fibonacci(b-a+1,T))


0

রুবি, 46 বাইট

->a,b{n=s=0;m=1;a.upto(b){|x|s+=x**n=m+m=n};s}

এখানে দেখার জন্য বিশেষত চালাক বা আসল কিছুই নেই। দুঃখিত।


আমার কাছে রুবির ননস্পিকার, ℤ.upto(ℤ)পদ্ধতিটি হ'ল রুবির অল-অবজেক্ট আচরণ সৌন্দর্যের একটি দুর্দান্ত অনুস্মারক। কোডটি আরও গল্ফ করা স্থানীয় রুবি স্পিকারের অনুশীলন হিসাবে ছেড়ে গেছে। আপনি কি এখনও কোডগলফ.স্ট্যাকেক্সেঞ্জার.কমেশনস / স্ক্যানস / 363৩/২ স্ক্যান করেছেন ?
রোমান সিজবোরা

0

জাভা 7, 96 বাইট

Golfed:

int n(int a, int b){int x=1,y=1,z=0,s=0;while(a<=b){s+=Math.pow(a++,x);z=x+y;x=y;y=z;}return s;}

Ungolfed:

int n(int a, int b)
{
    int x = 1, y = 1, z = 0, s = 0;
    while (a <= b)
    {
        s += Math.pow(a++, x);
        z = x + y;
        x = y;
        y = z;
    }

    return s;
}

0

আর, 57 বাইট

x=scan();sum((x[1]:x[2])^numbers::fibonacci(diff(x)+1,T))

অনেকটাই অকপট. gmp::fibnumঅন্তর্নির্মিত একটি সংক্ষিপ্ত, কিন্তু এটি সম্পূর্ণ ক্রম পর্যন্ত ফিরিয়ে দেওয়া সমর্থন করে না n, যা numbers::fibonacciযুক্তি যুক্ত করে করে T

প্রথমে আমার একটি আরও জটিল সমাধান ছিল gmp::fibnumযার সাথে এই দ্রবণটির চেয়ে 2 বাইট বেশি দীর্ঘ হয়েছিল।

x=scan();for(i in x[1]:x[2])F=F+i^gmp::fibnum((T<-T+1)-1);F

scan()6 বাইট সংরক্ষণের চেয়ে বেনামে ফাংশন ব্যবহার করা ; আমার পোস্ট সমাধান দেখুন।
rturnbull

হ্যাঁ, আমার বোকা।
জেএডি

0

ডিসি , 56 বাইট

?sf?sa0dsbsg1sc[lblcdlfrdsb^lg+sg+sclf1+dsfla!<d]dsdxlgp

[1,30]51 সেকেন্ডের মধ্যে ইনপুট জন্য সমাপ্ত । একটি নেতৃস্থানীয় সঙ্গে একবার মৃত্যুদন্ড কার্যকর এবং ঋণাত্মক সংখ্যা দুটি পৃথক লাইন দুটি ইনপুট লাগে আন্ডারস্কোর ( _) একটি ড্যাশ পরিবর্তে (অর্থাত -4হিসাবে ইনপুট হবে _4)।


0

পিএইচপি, 77 75 বাইট

for($b=$argv[$$x=1];$b<=$argv[2];${$x=!$x}=${""}+${1})$s+=$b++**$$x;echo$s;

কমান্ড লাইন আর্গুমেন্ট থেকে সীমানা নেয়। সাথে চালাও -nr
পিএইচপি'র ভেরিয়েবল ভেরিয়েবলগুলি আবার প্রদর্শন করা হচ্ছে (এবং তাদের সম্পর্কে আমি কী খুঁজে পেয়েছি

ভাঙ্গন

for($b=$argv[$$x=0}=1]; # $"" to 1st Fibonacci and base to 1st argument
    $b<=$argv[2];           # loop $b up to argument2 inclusive
    ${$x=!$x}                   # 5. toggle $x,             6. store to $1/$""
        =${""}+${1}             # 4. compute next Fibonacci number
)
    $s+=$b++**                  # 2. add exponential to sum,    3. post-increment base
        $$x;                    # 1. take current Fibonacci from $""/$1 as exponent
echo$s;                     # print result

ফ্লিপট্যাকের উত্তরটি পিএইচপি-তে পোর্ট করা 70 টি বাইট রয়েছে:

function f($a,$b,$x=1,$y=1){return$a>$b?0:$a**$x+f($a+1,$b,$y,$x+$y);}

0

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

f(a,b)==reduce(+,[i^fibonacci(j)for i in a..b for j in 1..b-a+1])

পরীক্ষার কোড এবং ফলাফল

(74) -> f(1,2)
   (74)  3
                                                   Type: Fraction Integer
(75) -> f(4,8)
   (75)  33156
                                                   Type: Fraction Integer
(76) -> f(-1,2)
   (76)  8
                                                   Type: Fraction Integer
(77) -> f(-4,-1)
   (77)  - 4
                                                   Type: Fraction Integer
(78) -> f(3,1)
   >> Error detected within library code:
   reducing over an empty list needs the 3 argument form
    protected-symbol-warn called with (NIL)

0

পাওয়ারশেল , 67 বাইট

$e=1;$args[0]..$args[1]|%{$s+=("$_*"*$e+1|iex);$e,$f=($e+$f),$e};$s

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

সিকোয়েন্সটি করার জন্য কিছুটা ভাল উপায় খুঁজে পাওয়া গেছে, তবে পাওয়ারশেল এটির জন্য অন্য ভাষার সাথে তুলনা করে না :)

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