কাউন্টার-ফিবোনাচি সিকোয়েন্সস


13

তিনটি সংখ্যা মি , এন এবং পি দেওয়া , আপনার কাজটি মি এবং এন দিয়ে শুরু হওয়া দৈর্ঘ্যের পিয়ের একটি তালিকা / অ্যারের মুদ্রণ করা এবং পি এর পরে প্রতিটি উপাদান তার আগে 2 সংখ্যার পার্থক্য উপস্থাপন করে, এমএন (কাউন্টার- ফাইবোনাচি সিকোয়েন্স )

এই চ্যালেঞ্জের জন্য আপনি ফলাফলটি ফেরত দিতে বা মুদ্রণ করতে কোনও ফাংশন ব্যবহার করতে পারেন বা একটি সম্পূর্ণ প্রোগ্রাম।

ইনপুট

তিনটি পূর্ণসংখ্যা, মি , এন এবং পি , আপনার ভাষা যা কিছু সমর্থন করে নিউলাইন / স্পেস / কমা দ্বারা পৃথক করা তবে আপনার নিজের ইনপুট ফর্ম্যাটটি নির্দিষ্ট করতে হবে। কোড সন্নিবেশ অনুমোদিত নয়।

আউটপুট

কাউন্টার-ফাইবোনাচি সিকোয়েন্স দ্বারা অন্তর্ভুক্ত সংখ্যাগুলি নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে (উদাহরণস্বরূপ m = 50, n = 40, p = 6):

  • 50,40,10,30,-20,50 (বা কমা পরে ফাঁক দিয়ে)
  • [50,40,10,30,-20,50] (বা কমা পরে ফাঁক দিয়ে)
  • 50 40 10 30 -20 50(বা \nস্থানগুলির পরিবর্তে (নিউলাইনগুলি সহ))
  • {50,40,10,30,-20,50} (বা কমাগুলির পরিবর্তে স্পেস সহ)

উদাহরণ

Input => Output

50,40,10 => 50,40,10,30,-20,50,-70,120,-190,310
-100,-90,7 => -100,-90,-10,-80,70,-150,220
250,10,8 => 250,10,240,-230,470,-700,1170,-1870

বিধি

  • আপনি গ্যারান্টিযুক্ত যে পি 1 এর চেয়ে বেশি
  • আপনার প্রোগ্রামটি পরীক্ষা করার একটি উপায় প্রদান করা উচিত, যদি সম্ভব হয়
  • নোট করুন যে এই ফাঁকগুলি নিষিদ্ধ এবং কোড সন্নিবেশ নিষিদ্ধ করা হয়েছে, যেমন উপরে উল্লিখিত হয়েছে

স্কোরিং এবং লিডারবোর্ড

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


ইটিএইচ প্রোডাকশনগুলি সম্পর্কিত সম্পর্কিত প্রশ্ন: সোমবার মিনি-গল্ফ # 1: ফিরোনাচি সলভারের বিপরীতে


সম্পর্কিত, সম্ভাব্য সদৃশ। এটি মূলত এটির মতো একই চ্যালেঞ্জ, তবে ক্রমের কোনও নির্দিষ্ট স্থান থেকে বিপরীত ক্রমে আউটপুট।
ইটিএইচ প্রডাকশনগুলি 16:24

@ETHproductions একটি প্রতারিত বিবেচনা করা যেতে পারে, কিন্তু এই একটি হল বিট ভিন্ন, প্রতিটি ভাষার সংক্ষিপ্ত সমাধান দেখতে বের করার চেষ্টা
জনাব Xcoder

হ্যাঁ, ভাষা অসমতার বিষয়ে ততটা চিন্তাই আগে ছিল না ;-) আমি মনে করি না যদিও এটি কোনও বড় পার্থক্য করে। এখানে মূল পার্থক্যটি হ'ল আপনি সেই চ্যালেঞ্জটি সমাধান করার জন্য যে অ্যালগরিদমের প্রথম পদক্ষেপটি বেশিরভাগ ক্ষেত্রেই ছাড়তে পারেন (প্রারম্ভিক পয়েন্টটি সন্ধান করতে পিছনের দিকে কাজ করা)
ETH প্রোডাকশনগুলি

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

আমি ব্যক্তিগতভাবে মনে করি এটি ঠিক আছে। পাশাপাশি, আমাদের কি পিছনের বিভাজক রাখার অনুমতি রয়েছে?
ইটিএইচ প্রডাকশনগুলি 16:37 এ 16'17 এ

উত্তর:


9

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

a#b=a:b#(a-b)
(.(#)).(.).take

দৈর্ঘ্যটি pপ্রথম প্যারামিটার। ব্যবহারের উদাহরণ: ( (.(#)).(.).take ) 10 50 40-> [50,40,10,30,-20,50,-70,120,-190,310]এটি অনলাইন চেষ্টা করুন!

তালিকাগুলিকে pউপাদানগুলিতে সংক্ষিপ্ত করতে এটি তৈরির চেয়ে বেশি বাইট লাগবে।


6

জেলি , 6 বাইট

_@С+Ṗ

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

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

_@С+Ṗ  Main link. Left argument: m. Right argument: n. Third argument: p

    +   Yield (m + n), the term that comes before m.
  С    Execute the link to the left p times, starting with left argument m and
        right argument (m + n). After each execution, replace the right argument
        with the left one and the left argument with the previous return value.
        Yield all intermediate values of the left argument, starting with m.
_@          Subtract the left argument from the right one.
        This yields the first (p + 1) terms of the sequence, starting with m.
    Ṗ   Pop; discard the last term.


5

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

f=(m,n,p)=>p?m+[,f(n,m-n,p-1)]:[]

বিন্যাসের একটি স্ট্রিং ফিরিয়ে দেয় 1,2,3,- স্ট্রিং ব্যবহার না করে!

পরীক্ষার স্নিপেট


5

পার্ল 6 , 25 বাইট

{($^m,$^n,*-*...*)[^$^p]}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with placeholder parameters 「$m」 「$n」 「$p」
  (
    $^m, $^n,  # declare first two params, and use them

    * - *      # WhateverCode lambda which subtracts two values

    ...        # keep using that to generate values

    *          # never stop (instance of type Whatever)

  )[ ^ $^p ]   # declare last param, and use it to grab the wanted values
               # 「^ $^p」 is short form of range op
               # 「0 ..^ $^p」 which excludes the 「$p」
}

5

সিজেম , 15 বাইট

q~2-{1$1$-}*]S*

1 অতিরিক্ত বাইট কারণ সিজেএম স্বাভাবিকভাবে অনুমোদিত আউটপুট ফর্ম্যাটগুলি> _ <ব্যবহার করে না

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

ব্যাখ্যা

q~               e# Read and eval the input
  2-             e# Subtract 2 from p (to account for m and n being in the list)
    {            e# Run this block p-2 times:
     1$1$-       e#   Copy the top values and subtract
          }*     e# (end of block)
            ]    e# Wrap the stack in an array
             S*  e# Join with spaces


3

Röda , 38 বাইট

f i,a,b{seq 1,i|{|_|[a];b=a-b;a=a-b}_}

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

ব্যাখ্যা:

f i,a,b{seq 1,i|{|_|[a];b=a-b;a=a-b}_}
f i,a,b{                             } /* Function declaration */
        seq 1,i                        /* Push numbers 1..i to the stream */
               |{|_|               }_  /* For each number in the stream: */
                    [a];               /*   Push the current value of a */
                        b=a-b;         /*   Set b = the next number */
                              a=a-b    /*   Set a = the previous value of b */

3

Haskell, , 33 বাইট

(m!n)0=[]
(m!n)p=m:(n!(m-n))(p-1)

কল করে কল করুন (m!n)p!ইনফিক্স ফাংশন হিসাবে সংজ্ঞায়িত করে কাজ করে যা গ্রহণ করে mএবং nএকটি ফাংশন pদেয় যা পছন্দসই ফলাফল গ্রহণ করে এবং ফেরত দেয়।


নিস! আমি ফাংশনটি ইনফিক্স তৈরি করার কথা ভাবি নি, সুতরাং হ্যাশেল দিয়ে আমার সেরা ;চেষ্টাটি 34 হয়েছিল B
অ্যালেক্সজে 136



2

পাইথ, 18 বাইট

JEKEVEJ=N-JK=JK=KN

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

ইনপুট এবং আউটপুট উভয়ই নতুন লাইনের মাধ্যমে সীমিত করা হয়।

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

JEKE                Read two lines of input to J and K
    VE              Read another line and loop that many times:
      J               Print J
       =N-JK          Set N to J - K (Pyth uses prefix notation)
            =JK       Set J to K
               =KN    Set K to N

1

গণিত, 26 বাইট

{-1,1}~LinearRecurrence~##

লভিন 'বিল্টিন। ফর্ম ইনপুট লাগে {{m, n}, p}LinearRecurrenceনতুন উপাদান তৈরি করতে ব্যবহার করতে পূর্ববর্তী উপাদানগুলির রৈখিক সংমিশ্রণের সহগগুলি জানতে চান, যা এই ক্ষেত্রে {-1,1}


1

কিউবিআইসি , 35 33 বাইট

:::?'a;b;`[c-2|e=a-b?e';`┘a=b┘b=e

প্রথমটি রেখে 2 বাইট সংরক্ষণ করা হয়েছে PRINT একটি কোড আক্ষরিক মধ্যে করা হয়েছে।

ব্যাখ্যা (35 বাইট সংস্করণ):

:::         Get parameters a, b, c from the cmd-line
  ';`       This suppresses a newline when printing
?a   b';`   PRINT a and b
[c-2|       FOR x=1; x<=(c-2); x++
  e=a-b       calculate the next term of the sequence
  ?e';`       Print it, suppressing newline
  ┘a=b        ┘ denotes a syntactic linebreak; shove the numbers one over
  ┘b=e        dito
            FOR-loop is auto-closed

এটি পরীক্ষা করার জন্য কোনও অনলাইন দোভাষী সম্পর্কে কোনও ধারণা আছে?
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার এখনও কোনও অনলাইন দোভাষী নেই, দুঃখিত। আমি দোভাষীর সাথে একটি লিঙ্ক যুক্ত করেছি, যা কিউবিসিক চলমান একটি ডসবক্স প্রকল্প Q
স্টেইনবার্গ

1
ব্যাখ্যাটি অনুবাদক সেন্টারবার্গের চেয়ে দ্বিখাদকের চেয়ে মূল্যবান, প্রতিক্রিয়া জানানোর জন্য ধন্যবাদ!
মিঃ এক্সকোডার

1

সি, 128 বাইট

m,n,p,z;main(c,v)char**v;{m=atoi(v[1]);n=atoi(v[2]);p=atoi(v[3])-2;printf("%d,%d",m,n);while(p--)z=m,m=n,n=z-m,printf(",%d",n);}

এই প্রোগ্রামটি তিন আর্গুমেন্ট parses m, nএবং pকম্যান্ড-লাইন থেকে, এবং উল্লিখিত আউটপুট ছাপে।

আধুনিক সি সংকলকগুলি আপনাকে মৌলিক আমদানি বাদ দিতে দেয় এবং এইভাবে আমরা ব্যবহারগুলি ছাড়াই printfএবং ব্যবহার করতে পারি ।atoi#include

intকোনও প্রকার ছাড়াই ঘোষিত হলে গ্লোবাল ভেরিয়েবলগুলি ডিফল্টরূপে হয় - এতে প্রচুর স্থান সাশ্রয় হয়।


1

জাভা, 66 বাইট

একবারের জন্য, ল্যাম্বডাস হ'ল গল্ফিংয়ের জন্য অদৃশ্য পদ্ধতির কারণে তাদের পুনরাবৃত্তি প্রয়োগের খুব চতুর্দিকে যার জন্য প্রচুর অতিরিক্ত বাইট প্রয়োজন।

Golfed:

String f(int m,int n,int p){return""+m+(p>1?","+f(n,m-n,p-1):"");}

Ungolfed:

public class CounterFibonacciSequences {

  private static final int[][] INPUTS = new int[][] { //
      { 50, 40, 10 }, //
      { -100, -90, 7 }, //
      { 250, 10, 8 } };

  private static final String[] OUTPUTS = new String[] { //
      "50,40,10,30,-20,50,-70,120,-190,310", //
      "-100,-90,-10,-80,70,-150,220", //
      "250,10,240,-230,470,-700,1170,-1870" };

  public static void main(String[] args) {
    for (int i = 0; i < INPUTS.length; ++i) {
      final int m = INPUTS[i][0];
      final int n = INPUTS[i][1];
      final int p = INPUTS[i][2];
      System.out.println("M: " + m);
      System.out.println("N: " + n);
      System.out.println("P: " + p);
      System.out.println("Expected: " + OUTPUTS[i]);
      System.out.println("Actual:   " + new CounterFibonacciSequences().f(m, n, p));
      System.out.println();
    }
  }

  String f(int m, int n, int p) {
    return "" + m + (p > 1 ? "," + f(n, m - n, p - 1) : "");
  }
}

1

এএইচকে, 68 বাইট

m=%1%
n=%2%
3-=2
Send %m%`n%n%`n
Loop,%3%
{
n:=m-n
m-=n
Send %n%`n
}

পথ 'সত্যিই বুদ্ধিমান না ক্লান্ত কিভাবে / পাস আর্গুমেন্ট ব্যবহার করতে সক্ষম হচ্ছে ( %1%, %2%, ...) কোন ম্যাথ ফাংশন সরাসরি


1

পাইথন 2 , 93 90 বাইট

u,t=int,input;m,n,p=u(t()),u(t()),u(t());l=[m,n]
for i in range(p-2):l.append(l[-2]-l[-1])

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

@ মিঃ এক্সকোডারকে ধন্যবাদ 3 বাইট সংরক্ষণ করা হয়েছে

এটি সংখ্যাগুলি ইনপুট হিসাবে গ্রহণ করে এবং সেগুলি সঠিকভাবে ফর্ম্যাট করে কাজ করে, তারপরে ইনপুটযুক্ত সংখ্যার ভিত্তিতে একটি তালিকা তৈরি করতে লুপের জন্য ব্যবহার করে using


1 বাইট সংরক্ষণের জন্য আপনি এই পরিসরে কমা পরে স্থানটি মুছে ফেলতে পারবেন
মিস্টার এক্সকোডার

আপনি যদি ইনপুট এবং ইনপুট.স্প্লিট দিয়ে নিজের ইনপুটটি মানচিত্র করেন তবে এটি আরও সংক্ষিপ্ত হতে পারে
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আমি বিভাজনের চেষ্টা করেছিলাম, তবে এটি দীর্ঘ হওয়ার পরে শেষ হয়েছিল।
কমরেড স্পার্কলপনি

ঠিক আছে, আমি এটি পরীক্ষা করতে পারিনি। এটা যাইহোক ভাল।
মিঃ এক্সকোডার

এবং পরিসীমাটির জন্য প্রথম যুক্তির প্রয়োজন নেই
মিঃ এক্সকোডার

0

সুইফ্ট - 85 বাইট

func y(x:Int,y:Int,z:Int){var m=x,n=y,p=z,c=0;for _ in 1...p{print(m);c=m;m=n;n=c-n}}

ব্যবহার: y(x:50,y:40,x:6)

সুইফ্ট - 84 বাইট

func z(l:[Int]){var m=l[0],n=l[1],p=l[2],c=0;for _ in 1...p{print(m);c=m;m=n;n=c-n}}

ব্যবহার: z(l: [50,40,6])


আউটপুট:

50
40
10
30
-20
50

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