ক্যাঙ্গারু ক্রম গণনা করুন


25

গল্পের

দাবি অস্বীকার: ক্যাঙ্গারু সম্পর্কে মেক আপ তথ্য থাকতে পারে।

ক্যাঙ্গারগুলি উন্নয়নের বিভিন্ন ধাপে পেরিয়ে যায়। তাদের বয়স বাড়ার সাথে সাথে তারা আরও উঁচুতে এবং আরও লাফিয়ে উঠতে পারে এবং ক্ষুধার্ত হওয়ার আগে তারা আরও বার লাফিয়ে উঠতে পারে।

পর্বে 1 , ক্যাঙ্গারু খুব সামান্য এবং সব সাগ্রহে গ্রহণ করা করতে পারবে না। এটি সত্ত্বেও, নিয়মিত পুষ্টি প্রয়োজন requires আমরা এর মতো একটি মঞ্চ 1 ক্যাঙ্গারুর কার্যকলাপের ধরণটি উপস্থাপন করতে পারি ।

o

পর্বে 2 , ক্যাঙ্গারু অল্প অল্প করে তুলতে পারে, কিন্তু না চেয়ে বেশি 2 আগেই ক্ষুধার্ত পায়। আমরা এই জাতীয় পর্যায়ে 2 ক্যাঙ্গারুর ক্রিয়াকলাপের নিদর্শন উপস্থাপন করতে পারি ।

 o o
o o o

পর্যায় পর 2 ক্যাঙ্গারু দ্রুত উন্নত। পরবর্তী প্রতিটি পর্যায়ে, ক্যাঙ্গারু কিছুটা উঁচুতে (গ্রাফিকাল উপস্থাপনায় 1 ইউনিট) এবং বহুবার দ্বিগুণ হয়ে যায়। উদাহরণস্বরূপ, একটি পর্যায় 3 ক্যাঙ্গারুর ক্রিয়াকলাপের ধরণটি এর মতো দেখাচ্ছে।

  o   o   o   o
 o o o o o o o o
o   o   o   o   o

এই সমস্ত জাম্পিংয়ের জন্য শক্তি প্রয়োজন, তাই কাঙারু প্রতিটি ক্রিয়াকলাপের ধরণটি শেষ করার পরে পুষ্টি প্রয়োজন। প্রয়োজনীয় সঠিক পরিমাণটি নিম্নলিখিত হিসাবে গণনা করা যেতে পারে।

  1. প্রতিটি ধার্য একটি পর্যায় কার্যকলাপ প্যাটার্ন এন তার উচ্চতা, অর্থাত, থেকে একটি নম্বরে Kangaroo 1 থেকে এন , যেখানে 1 স্থল এবং সাথে সঙ্গতিপূর্ণ এন সর্বোচ্চ অবস্থানে।

  2. ক্রিয়াকলাপের ধরণে সমস্ত উচ্চতার সমষ্টি গণনা করুন।

উদাহরণস্বরূপ, একটি পর্যায় 3 ক্যাঙ্গারুর ক্রিয়াকলাপের ধরণটিতে নিম্নলিখিত উচ্চতাগুলি অন্তর্ভুক্ত রয়েছে।

  3   3   3   3
 2 2 2 2 2 2 2 2
1   1   1   1   1

আমরা পাঁচটি থাকার 1 এর, আট 2 এর এবং তার মধ্যে চারটি 3 এর; যোগফল 5 · 1 + 8 · 2 + 4 · 3 = 33

কার্য

একটি পূর্ণ প্রোগ্রাম বা একটি ফাংশন যে একটি ধনাত্মক পূর্ণসংখ্যা লাগে লিখুন এন ইনপুট এবং কপি করে প্রিন্ট বা আয় একটি পর্যায় কার্যকলাপ প্রতি পুষ্টির প্রয়োজনীয়তা হিসাবে এন ক্যাঙ্গারু।

এটি ; বাইটের মধ্যে সবচেয়ে কম উত্তর জিততে পারে!

উদাহরণ

 1 ->     1
 2 ->     7
 3 ->    33
 4 ->   121
 5 ->   385
 6 ->  1121
 7 ->  3073
 8 ->  8065
 9 -> 20481
10 -> 50689

15
আমি হ্রাস পেয়েছি কারণ আমি চ্যালেঞ্জগুলি পছন্দ করি না যেখানে কোনও জটিল সেটআপটি গল্ফের জন্য একটি সরল সূত্রে নেমে আসে।
xnor

3
যদিও এখন পর্যন্ত সমস্ত উত্তর সূত্রটি ব্যবহার করেছে, আমি নিশ্চিত যে সমস্যার আক্রমণ করার অন্যান্য উপায় রয়েছে।
ডেনিস

2
এই অনুক্রমের ascii আর্ট আউটপুট উত্পন্ন করার জন্য কোন চ্যালেঞ্জ কি আছে?
মাইল 18

@ মাইলস নিশ্চিত নয় কিন্ডা কঠিন অনুসন্ধান করতে।
ডেনিস 18

ওল্ফ্রাম আলফা একটি সংক্ষিপ্ত সংস্করণটি খুঁজে http://www.wolframalpha.com/input/?i=2%5E(n-1)*(n%5E2-1)%2B1
পেল

উত্তর:


8

জেলি , 6 বাইট

²’æ«’‘

সূত্র ( এন 2 - 1) 2 এন - 1 ব্যবহার করেপ্রতিটি মান গণনা + 1 ব্যবহার করে। @ কিউয়ার্প-ডের্প একটি প্রমাণ সরবরাহ করার জন্য যথেষ্ট দয়াবান ছিল ।

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

ব্যাখ্যা

²’æ«’‘  Input: n
²       Square n
 ’      Decrement
  æ«    Bit shift left by
    ’     Decrement of n
     ‘  Increment

আপনি এটি হাতে হাতে করেছেন, বা এটি স্বয়ংক্রিয়ভাবে তৈরি করেছেন?
এরিক আউটগল্ফার

এটি জে ব্যবহার করে এবং ওআইআইএস অনুসন্ধান করে খুঁজে পেয়েছে, তারপরে এটি হাতের মাধ্যমে সহজ করেছেন
মাইল

আমি আমার নিজের উত্তরটিকে প্রতিদ্বন্দ্বিতা হিসাবে বিবেচনা করি, তাই আমি এটি উত্তর গ্রহণ করেছি।
ডেনিস

17

Coffeescript, 19 বাইট

(n)->(n*n-1<<n-1)+1

সম্পাদনা করুন: ডেনিসকে 6 বাইট কেটে দেওয়ার জন্য ধন্যবাদ!

ক্যাঙ্গারু সংখ্যা উত্পন্ন করার সূত্রটি হ'ল:

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

সূত্রের ব্যাখ্যা:

সংখ্যা 1's K(n)এর চূড়ান্ত সমষ্টি2^(n - 1) + 1

সংখ্যা n's K(n)এর চূড়ান্ত সমষ্টি 2^(n - 1), তাই সব এর সমষ্টি nএর হয় n * 2^(n - 1)

চূড়ান্ত সমষ্টিতে অন্য কোনও সংখ্যার ( d) সংখ্যা , সুতরাং সমস্তগুলির যোগফল হবে ।K(n)2^ndd * 2^n

  • সুতরাং, অন্যান্য সমস্ত সংখ্যার যোগফল = (T(n) - (n + 1)) * 2^n, কোথায় T(n)ত্রিভুজ সংখ্যা ফাংশন (যার সূত্র রয়েছে T(n) = (n^2 + 1) / 2)।

    এর পরিবর্তে, আমরা চূড়ান্ত যোগফল পাই

      (((n^2 + 1) / 2) - (n + 1)) * 2^n
    = (((n + 1) * n / 2) - (n + 1)) * 2^n
    = ((n + 1) * (n - 2) / 2) * 2^n
    = 2^(n - 1) * (n + 1) * (n - 2)
    

যখন আমরা সমস্ত যোগফল একসাথে যোগ করি তখন আমরা পাই K(n)যা সমান

  (2^(n - 1) * (n + 1) * (n - 2)) + (2^(n - 1) + 1) + (n * 2^(n - 1))
= 2^(n - 1) * ((n + 1) * (n - 2) + n + 1) + 1
= 2^(n - 1) * ((n^2 - n - 2) + n + 1) + 1
= 2^(n - 1) * (n^2 - 1) + 1

... যা উপরের সূত্রের সমান।


1
পিপিসি'র ম্যাথজ্যাক্স নেই কেন?
জোনাথন অ্যালান

5
@ জোনাথন আমরা করেছি, তবে কোড ব্লকে ডলারের চিহ্ন নিয়ে এটি অনেক সমস্যার সৃষ্টি করেছে।
ডেনিস

1
@ জোনাথন অ্যালান সেখানে সমস্যা ছিল তবে এটি কিছুক্ষণের জন্য চমৎকার হয়েছিল 1 2 3
মাইল

ভ্যানিলা জেএস দুটি বাইট সংক্ষিপ্ত:n=>(n*n-1<<n-1)+1
ইটিএইচ প্রোডাকশনগুলি

অপেক্ষা করুন, ম্যাথজ্যাক্স এখানে কাজ করে না? বা সমীকরণটি কেন একটি চিত্র?
রুডলফ জেলিন


6

জেলি , 4 বাইট

ŒḄ¡S

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

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

ŒḄ¡S  Main link. Argument: n (integer)

ŒḄ    Bounce; turn the list [a, b, ..., y, z] into [a, b, ..., y, z, y, ..., b, a].
      This casts to range, so the first array to be bounced is [1, ..., n].
      For example, 3 gets mapped to [1, 2, 3, 2, 1].
  ¡   Call the preceding atom n times.
      3 -> [1, 2, 3, 2, 1]
        -> [1, 2, 3, 2, 1, 2, 3, 2, 1]
        -> [1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1]
   S  Compute the sum.

ওহ, তাই যে কি বাউন্স করে। আমি আশা করি কিছুদিন আগে জাপটে সেই সঠিক অপারেশনটি যুক্ত করার আগে আমি জানতাম: পি
ইটিএইচ প্রডাকশন

5

পাইথন 2, 25 23 বাইট

lambda x:(x*x-1<<x-1)+1

মাইলের সূত্র ব্যবহৃত হয়েছে।

-২ বাইটের জন্য জোনাথন অ্যালানকে ধন্যবাদ।


আপনি প্রয়োজন হবে না ~-x। আপনি x-1পাশাপাশি ব্যবহার করতে পারেন (কোনও সংক্ষিপ্ত নয়), যেহেতু বিয়োগের স্থানান্তর চেয়ে উচ্চতর অগ্রাধিকার রয়েছে।
mbomb007

@ mbomb007 আমি জানি, তবে জোনাথন অ্যালান আমাকে কোডটি ব্যবহার করেছিল ~-x, তাই আমি এটিকে অপরিবর্তিত রাখার সিদ্ধান্ত নিয়েছি। ঠিক আছে, এটি সবার পছন্দ বলে মনে হয় x-1, যদিও (ডেনিসও সেই সঠিক কথাটি বলেছিল)।
এরিক দি আউটগল্ফার

আইএমএইচও, এটি আরও পঠনযোগ্য এবং এটি ব্যবহৃত গাণিতিক সূত্রের মতো দেখায়।
mbomb007

@ mbomb007 ওহ আপনি অতি সম্প্রতি যুক্ত অনুগ্রহ বোঝাতে চান? যদি তা হয় তবে আমি এটি পরিবর্তন করেছি। তবে, আমি তখন কিছু যুক্তি উত্থাপন করতে পারি ... আমি -~(x*x-1<<~-x)রেকর্ডটির জন্যও করতে পারতাম , তবে -1এখনও বিদ্যমান, তাই আমি কোড মিশ্রিত করতে পছন্দ করি না ...
এরিক দ্য আউটগলফার

আমি অনুগ্রহ সম্পর্কে কিছুই বোঝাতে চাই না। এই উত্তরে ব্যবহৃত গণিতের সূত্র । আমরা হিসাবে "বিয়োগ 1" লিখি - 1
mbomb007

4

লুয়া, 105 বাইট

s=tonumber(arg[1])e=1 for i=1,s>1 and 2^(s-1)or 0 do e=e+1 for j=2,s-1 do e=e+j*2 end e=e+s end print(e)

ডি-golfed:

stage = tonumber(arg[1])
energy = 1
for i = 1, stage > 1 and 2 ^ (stage - 1) or 0 do
    energy = energy + 1
    for j = 2, stage - 1 do
        energy = energy + j * 2
    end
    energy = energy + stage
end
print(energy)

বিনোদনমূলক সমস্যা!


3
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম!
এরিক দি আউটগল্ফার

s = টনম্বার (আর্গ [1]) কিছু বাইট সংরক্ষণ করার জন্য s = ... এর জন্য সরিয়ে নেওয়া যেতে পারে। ... আরগ টেবিলটি প্যাকহীন অবস্থায় সঞ্চয় করে, এক্ষেত্রে আর্গ [1] প্রদান করে। এবং লুয়ার স্ট্রিংগুলির সংখ্যার মতো কাজ করবে সেগুলিতে কেবলমাত্র একটি বৈধ সংখ্যা নির্মাতা রয়েছে, যা আমরা অনুমান করতে পারি যে এই ক্ষেত্রে ইনপুটটি রয়েছে।
এটাকো


4

গল্ফস্ক্রিপ্ট , 11 বাইট

~.2?(2@(?*)

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

4 বাইট অপসারণ করার জন্য মার্টিন ইন্ডারকে (8478) ধন্যবাদ

ব্যাখ্যা:

            Implicit input                 ["A"]
~           Eval                           [A]
 .          Duplicate                      [A A]
  2         Push 2                         [A A 2]
   ?        Power                          [A A^2]
    (       Decrement                      [A A^2-1]
     2      Push 2                         [A A^2-1 2]
      @     Rotate three top elements left [A^2-1 2 A]
       (    Decrement                      [A^2-1 2 A-1]
        ?   Power                          [A^2-1 2^(A-1)]
         *  Multiply                       [(A^2-1)*2^(A-1)]
          ) Increment                      [(A^2-1)*2^(A-1)+1]
            Implicit output                []

4

সিজেম, 11 বাইট

ri_2#(\(m<)

অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

r           e# Get token.       ["A"]
 i          e# Integer.         [A]
  _         e# Duplicate.       [A A]
   2#       e# Square.          [A A^2]
     (      e# Decrement.       [A A^2-1]
      \     e# Swap.            [A^2-1 A]
       (    e# Decrement.       [A^2-1 A-1]
        m<  e# Left bitshift.   [(A^2-1)*2^(A-1)]
          ) e# Increment.       [(A^2-1)*2^(A-1)+1]
            e# Implicit output.

কেবল যদি আমার প্রয়োজন না হয় ri...
এরিক দি আউটগল্ফার

3

গণিত, 15 বাইট

(#*#-1)2^#/2+1&

এখানে কোনও বিটশিফ্ট অপারেটর নেই, সুতরাং আমাদের প্রকৃত ক্ষয়ক্ষতিটি করা দরকার, তবে তারপরে এটি ক্ষয়কারীকে হ্রাস করার পরিবর্তে 2 দিয়ে ভাগ করে নেওয়া কম।


3

সি, 26 বাইট

ম্যাক্রো হিসাবে:

#define f(x)-~(x*x-1<<~-x)

একটি ফাংশন হিসাবে (27):

f(x){return-~(x*x-1<<~-x);}

প্যারামিটারটি যদি একটি অভিব্যক্তি হয় তবে ম্যাক্রো সংস্করণটি ভুল ফলাফল তৈরি করবে। বিবেচনা করুন f(1+2)
কাস্পারড

1
@ ক্যাস্পার্ড প্যারামিটারটি এক্সপ্রেশন হবে না। একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন লিখুন যা ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যা নেবে এবং একটি পর্যায়ে এন ক্যাঙ্গারুর ক্রিয়াকলাপে পুষ্টির প্রয়োজনীয়তা মুদ্রণ করে বা ফিরিয়ে দেয় ।
এরিক দ্য আউটগল্ফার

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

@ ক্যাস্পার্ড মূলত, আমি মনে করি এটি কোনও ফাংশনের মতো, তবে মূল্যায়ন ছাড়াই। এছাড়াও, আমি নীচে একটি "বাস্তব" ফাংশন সরবরাহ করেছি, যদি এটি আপনি চান তবে।
এরিক দ্য আউটগল্ফার


2

সি #, 18 বাইট

n=>(n*n-1<<n-1)+1;

কিওয়ার্প-ডের্পের দুর্দান্ত গাণিতিক বিশ্লেষণের ভিত্তিতে বেনামে ফাংশন ।

পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

using System;

namespace KangarooSequence
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<int,int>f= n=>(n*n-1<<n-1)+1;

            //test cases:
            for (int i = 1; i <= 10; i++)
                Console.WriteLine(i + " -> " + f(i));
            /* will display:
            1 -> 1
            2 -> 7
            3 -> 33
            4 -> 121
            5 -> 385
            6 -> 1121
            7 -> 3073
            8 -> 8065
            9 -> 20481
            10 -> 50689
            */
        }
    }
}

2

ব্যাচ, 30 বাইট

@cmd/cset/a"(%1*%1-1<<%1-1)+1"

ঠিক আছে, এটি যাইহোক জাভা প্রহার।



2

ওসিস , 9 বাইট

2n<mn²<*>

আমি অবাক হই যে কোনও বিল্ট-ইন নেই 2^n

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

ব্যাখ্যা:

2n<m        # 2^(n-1) (why is m exponentiation?)
    n²<     # n^2-1
       *    # (2^(n-1))*(n^2-1)
        >   # (2^(n-1))*(n^2-1)+1

ডাচ ভাষায় mক্ষয়ক্ষতি হ'ল অ্যাক্সভারভেফিং, এটি এবং সৃজনশীলতার অভাব। এছাড়াও, অলসতা এবং বিলম্বের কারণে প্রচুর অপারেটর এখনও কার্যকর করা হয়নি।
আদনান

1

রেকেট 33 বাইট

@ কিওয়ার্প-ডের্প দ্বারা ব্যাখ্যা করা সূত্র ব্যবহার করে

(+(*(expt 2(- n 1))(-(* n n)1))1)

Ungolfed:

(define (f n)
  (+ (*(expt 2
            (- n 1))
      (-(* n n)
        1))
    1))

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

(for/list((i(range 1 11)))(f i))

আউটপুট:

'(1 7 33 121 385 1121 3073 8065 20481 50689)

1

রুবি, 21 বাইট

@ কিওয়ার্প-ডের্প মূলত ভারী উত্তোলন করেছিলেন।

রুবিতে প্রাধান্য পাওয়ার কারণে মনে হচ্ছে আমাদের কিছু প্যারেন দরকার:

->(n){(n*n-1<<n-1)+1}

1

স্কালা, 23 বাইট

(n:Int)=>(n*n-1<<n-1)+1

বিস্মরণ হিসাবে বিট শিফট ব্যবহার করে



1

আর, 26 বাইট

নির্লজ্জভাবে সূত্রটি প্রয়োগ করা হচ্ছে

n=scan();2^(n-1)*(n^2-1)+1


0

গ্রোভি (22 বাইট)

{(it--**2-1)*2**it+1}​

সংরক্ষণ করে না n , তবে এই প্রতিযোগিতার অন্যান্য সকলের মতো একই সূত্র ব্যবহার করে। হ্রাস সহ 1 বাইট সংরক্ষণ করা হয়েছে, প্রয়োজনীয় বন্ধনীগুলির কারণে।

পরীক্ষা

(1..10).collect{(it--**2-1)*2**it+1}​

[1, 7, 33, 121, 385, 1121, 3073, 8065, 20481, 50689]


0

জেএস-ফোর্থ, 32 বাইট

অতি সংক্ষিপ্ত নয়, তবে এটি জাভার চেয়ে ছোট। এই ফাংশনটি স্ট্যাকের উপরে ফলাফলকে ধাক্কা দেয়। এর জন্য জেএস-ফোর্থ প্রয়োজন কারণ আমি ব্যবহার করি <<

: f dup dup * 1- over 1- << 1+ ;

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

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