(3 + বর্গক্ষেত্র (5)) গণনা করা হচ্ছে ঠিক


23

আজ আপনার লক্ষ্যটি হল একটি এবং দেওয়া অ-নেতিবাচক পূর্ণসংখ্যা n যেমন:

(3 + বর্গক্ষেত্র (5)) ^ n = এ + বি * স্কয়ার্ট (5)

আপনি একটি প্রোগ্রাম বা একটি ফাংশন যে পরামিতি নেয় লেখা উচিত এন এবং আউটপুট একটি এবং আপনার পছন্দের একটি বিন্যাসে।

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য। অতিরিক্তভাবে, এটি উদ্দেশ্যযুক্ত যে আপনি বুনিয়াদি গাণিতিক ব্যবহার করে উপরের সমস্যাটি বাস্তবায়ন করেন। সুতরাং আপনি বিল্ট-ইন সঠিক বীজগণিত কার্যকারিতা, যুক্তি বা অ-তুচ্ছ গাণিতিক কাঠামো প্রয়োগকরণের ফাংশন (উদাহরণস্বরূপ লুকাস ক্রম ) ব্যবহার করতে পারবেন না।

বাইটস মধ্যে সংক্ষিপ্ত কোড।


ইনপুট / আউটপুট উদাহরণ:

0 → 1, 0
1 → 3, 1
2 → 14, 6
3 → 72, 32
4 → 376, 168
5 → 1968, 880
6 → 10304, 4608
7 → 53952, 24128
8 → 282496, 126336
9 → 1479168, 661504

উত্তর:


3

ডায়ালগ এপিএল, 18 বাইট

((3∘×+5 1×⌽)⍣⎕)1 0

এটি এমন একটি প্রোগ্রাম যা মাধ্যমে ইনপুট নেয়

 (         )         Monadic train:
  3∘×                3 times argument
     +               Plus
      5 1×⌽          (5 1) times the reverse
(           ⍣⎕)      Apply that function (input) times
               1 0   starting with (1 0)

এখানে ব্যবহৃত বৈশিষ্ট্যগুলি এপ্রিল 2015 এর আগে কার্যকর করা হয়েছিল, এই উত্তরটি বৈধ করে তুলেছে।

এখানে চেষ্টা করুন । মনে রাখবেন যে tryapl.org ডায়ালগের একটি সীমাবদ্ধ উপসেট এবং সমর্থন করে না


16

অক্টাভা, 26 বাইট

[3 5;1 3]**input('')*[1;0]

কারণ ( a + b * sqrt (5)) * (3 + sqrt (5)) = ( 3a + 5b ) + ( a + 3b ) * স্কয়ার্ট (5),

গুণমান ইনপুট ভেক্টর

| 1 |    /* a = 1 */
| 0 |    /* b = 0 */

যা ম্যাট্রিক্স অনুসারে 1 = (3 + sqrt (5)) ^ 0 এর জন্য দাঁড়িয়েছে

| 3 5 |
| 1 3 |

স্বাভাবিক মনে হচ্ছে লুপিংয়ের পরিবর্তে n, আমরা বরং ম্যাট্রিক্সকে শক্তিতে nবাড়িয়ে তুলি এবং তারপরে ইনপুট ভেক্টর দিয়ে এটির গুণ করি।


আপনি নিজেকে বিক্রি করছেন, স্বল্প বিক্রি [3 5;1 3]**input('')*[1;0]হচ্ছে ২
by

3
@(n)[3 5;1 3]^n*[1;0](ফাংশন হ্যান্ডেল) আপনাকে পাঁচটি অক্ষর বাঁচাতে পারে, দুর্দান্ত ধারণা!
flawr

14

পাইথন 2, 50

a=1;b=0
exec"a,b=3*a+5*b,3*b+a;"*input()
print a,b

প্রতিনিধিত্বকারী 3+sqrt(5)জুটির উপর ক্রিয়া দ্বারা বারবার দ্বারা গুণিত হয় । ম্যাট্রিক্স দ্বারা কলাম ভেক্টর এবং বাম গুণ গুণমান দিয়ে শুরু সমান ।(a,b)a+b*sqrt(5)[1,0]n[[3,5],[1,3]]


12

জুলিয়া, 22 20 বাইট

n->[3 5;1 3]^n*[1;0]

এটি ল্যাম্বডা ফাংশন তৈরি করে যা ইনপুট হিসাবে একক পূর্ণসংখ্যার গ্রহণ করে এবং সমাধানের সাথে সম্পর্কিত [একটি, খ] সংখ্যার পূর্ণসংখ্যার 2-উপাদান ভেক্টর প্রদান করে। এটি কল করার জন্য, এটির একটি নাম দিন f=n->...

গুণ করে শুরু করুন

প্রাথমিক প্রসারিত

তারপরে আমরা এই সমীকরণের ডান হাতটি একটি 2-কলামের ম্যাট্রিক্সে অনুবাদ করতে পারি, যেখানে প্রথমটি a এর সহগের সাথে এবং দ্বিতীয়টি এর সহগের সাথে মিলিত হয় :

জরায়ু

এই ম্যাট্রিক্সকে নিজেই n বার করে গুণান , তারপরে কলাম ভেক্টর (1, 0) এবং POOF দিয়ে ডান গুণ করুন! সমাধান ভেক্টর পপ আউট।

উদাহরণ:

julia> println(f(0))
[1,0]

julia> println(f(5))
[1968,880]

8

জে, 20 বাইট

+/@:*(3 5,.1 3&)&1 0

[1 0]ম্যাট্রিক্স [[3 5] [1 3]] nবারের সাথে ভেক্টরকে গুণ করুন ।

@ অ্যালগরিদমশর্ককে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে।

ব্যবহার এবং পরীক্ষা:

   (+/@:*(3 5,.1 3&)&1 0) 5
1968 880

   (+/@:*(3 5,.1 3&)&1 0) every i.6
   1   0
   3   1
  14   6
  72  32
 376 168
1968 880

আপনি মৌন ক্রিয়া বিশেষণ পার্সিং শোষণ দ্বারা 20 নিচে পেতে পারেন: +/ .*(3 5,:1 3&)&1 0
অ্যালগরিদমশর্ক

@ এলগোরিদমশর্ক ধন্যবাদ, যদিও (+/@:*&(3 5,.1 3)&1 0)কাজ করে (+/@:*&1 0&(3 5,.1 3))না কেন ? দ্বিতীয়টির বন্ধনটি সঠিকভাবে করা উচিত নয় এবং প্রথমটিটি অদলবদল করা উচিত নয়?
এলোমেলো

এটি পেয়েছে, তারা যেমনটি প্রত্যাশা করেছিল তেমনি বন্ধন করে তবে &বাইরেরটি পাওয়ারিং / লুপিং তৈরি করে যাতে আপনি পাওয়ারের সময় বাম দিকের ইনপুটটি পরিবর্তন করেন (সাধারণ ডানদিকের পরিবর্তনের বিপরীতে)।
এলোমেলো

7

পাইথ, 20 বাইট

u,+*3sGyeG+sGyeGQ,1Z

uযা সাধারণভাবে হ্রাস পায়, এখানে প্রয়োগ বারবার লুপ হিসাবে ব্যবহৃত হয়। আপডেট ফাংশনটি হল G-> ,+*3sGyeG+sGyeGযেখানে Gএকটি 2 টিউপল রয়েছে। যে ফাংশন অনুবাদ করে 3*sum(G) + 2*G[1], sum(G) + 2*G[1]sহয় sum, yহয় *2


আমি আপনার উপর @ র্যান্ডমরার উত্তরটি বেছে নিয়েছি কারণ তার / তাঁর 16 মিনিট আগে পোস্ট করা হয়েছিল, দুঃখিত।
orlp

5

এপিএল (22)

{⍵+.×⍨2 2⍴3 5 1}⍣⎕⍨2↑1

ব্যাখ্যা:

  • {... }⍣⎕⍨2↑1: একটি সংখ্যা পড়ুন, এবং নিম্নলিখিত [1,0]ইনপুট হিসাবে প্রাথমিক ইনপুট হিসাবে ব্যবহার করে নীচের ফাংশনটি চালান ।
    • 2 2⍴3 5 1: জরায়ু [[3,5],[1,3]]
    • ⍵+.×⍨: প্রথম সংখ্যাটি 3 দ্বারা 3 দ্বারা, দ্বিতীয়টি 5 দ্বারা গুণিত করুন এবং তাদের যোগফল দিন, এটি নতুন প্রথম সংখ্যা; তারপরে প্রথম সংখ্যাটিকে 1 দ্বারা 1 দ্বারা, দ্বিতীয়টি 3 দ্বারা গুণিত করুন এবং সংখ্যার যোগ করুন, এটিই নতুন দ্বিতীয় সংখ্যা।

1
আওহিস ইয়েস, এপিএল।
নিট

5

জেলি , 13 বাইট

5W×U++Ḥ
2Bdz¡

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

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

5W×U++Ḥ    Helper link. Argument: [a, b]

5W         Yield [5].
  ×U       Multiply it by the reverse of [a, b]. This yields [5b, a].
    +      Hook; add the argument to the result. This yields [a + 5b, a + b].
     +Ḥ    Fork; add the doubled argument ([2a, 2b]) to the result.
           This yields [3a + 5b, a + 3b].

2Bdz¡      Main link. Argument: n

2B         Convert 2 to binary, yielding [1, 0].
    ¡      Repeat:
  Ç            Apply the helper link...
   ³           n times.

না, আমি নিশ্চিত যে ইন্টারনেট তৈরির আগে জেলি অনেক আগে ছিল: পি
কনর ও'ব্রায়ান

1
@ ডো ᴡɴɢᴏᴀᴛ প্রতিযোগিতামূলক উত্তরের জন্য, আমি বাইট গণনাটি দ্বিতীয় লাইনে রেখে দেওয়া পছন্দ করি। এটি উত্তরকে লিডারবোর্ড এবং ব্যবহারকারীর মধ্যে শীর্ষে ওঠা থেকে শীর্ষে রাখে, যা অন্যায় বলে মনে হয়।
ডেনিস


3

সিজেম, 21 বাইট

0X{_2$3*+@5*@3*+}li*p

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

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

0X       " Stack: [ 0 1 ]                                ";
li{      " Do int(input()) times:                        ";
  _2$    " Stack: [ a b ] -> [ a b b a ]                 ";
  3*+    " Stack: [ a b b a ] -> [ a b (b+3a) ]          ";
  @5*@3* " Stack: [ a b (b+3a) ] -> [ (b+3a) 5a 3b ]     ";
  +      " Stack: [ (b+3a) 5a 3b ] -> [ (b+3a) (5a+3b) ] ";
}*       "                                               ";
p        " Print topmost stack item plus linefeed.       ";
         " Print remaining stack item (implicit).        ";

3

জাভাস্ক্রিপ্ট, 63 61 বাইট

আমি দ্বিপদীটির পুনরাবৃত্তিমূলক মূল্যায়ন ব্যবহার করছি: (x + y) ^ n = (x + y) (x + y) ^ {n-1}

নতুন (@ এডসি 65 এর জন্য ধন্যবাদ)

F=n=>{for(i=y=0,x=1;i++<n;)[x,y]=[3*x+5*y,x+3*y];return[x,y]}

পুরাতন

F=n=>{for(i=y=0,x=1;i<n;i++)[x,y]=[3*x+5*y,x+3*y];return [x,y]}

1
আপনার সূত্রটি সম্পাদনা বিবেচনা করতে পারে। আমাদের আর ম্যাথজ্যাক্স নেই।
অ্যালেক্স এ।

আমি ভেবেছিলাম কিছুদিন আগে এটি চালু হয়েছিল?
flawr

হ্যাঁ, তবে এটি স্ট্যাক স্নিপেটগুলিকে গোলমাল করেছিল, সুতরাং এটি অক্ষম করতে হয়েছিল।
অ্যালেক্স এ।

আমি হিসাবে 63 হিসাবে গণনা, এবং 61F=n=>{for(i=y=0,x=1;i++<n;)[x,y]=[3*x+5*y,x+3*y];return[x,y]}
edc65

n=>[...Array(n)].map(_=>[x,y]=[3*x+5*y,x+3*y],y=0,x=1)[n-1]একই দৈর্ঘ্য
l4m2

2

সি, 114 বাইট

g(n){int i,a[2]={1,0},b[2];for(i=0;i<n;i++)*b=*a*3+5*a[1],b[1]=*a+3*b[1],*a=*b,a[1]=b[1];printf("%d,%d",*a,a[1]);}

এটি বোরিংয়ের মতো ম্যাট্রিক্সের গুণকে কার্যকর করে। আরও মজাদার জন্য (উদ্ধৃতি: "দুর্দান্তভাবে ভয়ঙ্কর") 238 বাইট সমাধান, আর দেখার দরকার নেই!

f(n){int p[2][n+3],i,j,k=0,a[2]={0};for(j=0;j<n+3;j++)p[0][j]=0;*p[1]=0;(*p)[1]=1;for(j=0;j<n;j++,k=!k)for(i=1;i<n+3;i++)p[!k][i]=p[k][i-1]+p[k][i];for(i=1;i<n+2;i++)a[!(i%2)]+=p[k][i]*pow(3,n+1-i)*pow(5,(i-1)/2);printf("%d,%d",*a,a[1]);}

উন্মোচন:

g(n){
    int i,a[2]={1,0},b[2];
    for(i=0;i<n;i++)
        *b=3**a+5*a[1],b[1]=*a+3*b[1],*a=*b,a[1]=b[1];
    printf("%d,%d",*a,a[1]);
}

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


1
এটি একটি বরং
অত্যধিক

@orlp আমি এই ভাষার জন্য একটি সংক্ষিপ্ত অ্যালগরিদমের কথা ভাবতে পারি না। আমি ভেবেছিলাম এই একটি কাজ করবে, কিন্তু এটি একরকম হাতছাড়া হয়ে গেল, হাহা। হাতে ম্যাট্রিক্সের গুণটি প্রয়োগ করা খুব ভালভাবে খাটো হতে পারে।
ব্রেইনস্টিল

1
আপভোট করুন কারণ এটি দুর্দান্ত ভয়ঙ্কর।
kirbyfan64sos

2

k2 - 22 চর

এক তর্ক নিয়ে কাজ করা।

_mul[(3 5;1 3)]/[;1 0]

_mulম্যাট্রিক্স গুণ তাই আমরা ম্যাট্রিক্স সঙ্গে এটি তরকারি হয় (3 5;1 3): এবং তারপর কার্মিক ক্ষমতা ক্রিয়া বিশেষণ দিয়ে আঘাত f/[n;x]প্রযোজ্য fকরার x, nবার। আবার আমরা এটি কারি, এবার ভেক্টর শুরুর সাথে 1 0

  _mul[2 2#3 5 1]/[;1 0] 5
1968 880
  f:_mul[2 2#3 5 1]/[;1 0]
  f'!8  /each result from 0 to 7 inclusive
(1 0
 3 1
 14 6
 72 32
 376 168
 1968 880
 10304 4608
 53952 24128)

এটি কোনায় কাজ করবে না, কারণ কোনও কারণে f/[n;x]সঠিকভাবে কার্যকর হয়নি। কেবল n f/xসিনট্যাক্সই কাজ করে, তাই সংক্ষিপ্ত ফিক্সটি {x _mul[(3 5;1 3)]/1 0}23 চরে।


কি দারুন. কারিঙের এই ব্যবহারটি এত স্মার্ট বলে আমি মনে করি আমার কে উত্তরটি বোকা। যাইহোক, আমি আপনার বাগের ট্র্যাকারটিতে কোনাতে পাওয়া সমস্যাটি উত্থাপন করেছি ।
kirbyfan64sos


2

ইডস, 25 বাইট (20 টি অক্ষর)

({:{2,4}·x±Σx:}$1)∘1

আমি আরও উন্নতির জন্য আশাবাদী, তবে এটি সক্ষম করার জন্য কেবলমাত্র প্রচুর ধনুর্বন্ধনী প্রয়োজন, অপারেটর নজির গল্ফিংয়ের পক্ষে অনুকূল নয়।

এটি প্রত্যাশা করে যে ইনপুটটি $ 1 মেমরি স্লটে থাকবে, সুতরাং এটি কাজ করে:

ised '@1{9};' '({:{2,4}·x±Σx:}$1)∘1'

এন = 0 এর জন্য শূন্যটি এড়িয়ে যায় (1 0 এর পরিবর্তে 1 আউটপুট)। যদি এটি কোনও সমস্যা হয় তবে ফাইনালের 1সাথে প্রতিস্থাপন করুন ~[2]


2

সিরিয়াসলি, 32 বাইট, অ-প্রতিযোগিতামূলক

,╗43/12`╜";)@4*≈(6*-"£n.X4ì±0`n

হেক্স ডাম্প:

2cbb34332f313260bd223b2940342af728362a2d229c6e2e58348df130606e7f

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

স্পষ্টতই সংক্ষিপ্ততর প্রার্থী নয়, তবে অন্তত পদ্ধতিটি আসল। (উল্লেখ করে যে এই জাতীয় সমস্যাটি অগত্যা একটি লুকাস সিকোয়েন্সকে নির্দেশ করে, বর্ণনায় উল্লিখিত হিসাবে, এই প্রোগ্রামটি পুনরাবৃত্তির সম্পর্কটি ব্যবহার করে ক্রমগুলির ক্রমান্বয়ে পদ তৈরি করে

a_n = 6 * a_ {n-1} - 4 * a_ {n-2}।)


1

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

(iterate(\(a,b)->(3*a+5*b,a+3*b))(1,0)!!)

ব্যবহারের উদাহরণ: (iterate(\(a,b)->(3*a+5*b,a+3*b))(1,0)!!) 8-> (282496,126336)


1

সি / সি ++ 89 বাইট

void g(int n,long&a,long&b){if(n){long j,k;g(n-1,j,k);a=3*j+5*k;b=j+3*k;}else{a=1;b=0;}}

বিন্যাসকৃত:

    void g(int n, long&a, long&b) {
if (n) {
    long j, k;
    g(n - 1, j, k);
    a = 3 * j + 5 * k;
    b = j + 3 * k;
} else {
    a = 1;
    b = 0;
}}

একই ধারণা:

void get(int n, long &a, long& b) {
    if (n == 0) {
        a = 1;
        b = 0;
        return;
    }
    long j, k;
    get(n - 1, j, k);
    a = 3 * j + 5 * k;
    b = j + 3 * k;
}

পরীক্ষা বেঞ্চ:

#include <iostream>
using namespace std;    
int main() {
    long a, b;
    for (int i = 0; i < 55; i++) {
        g(i, a, b);
        cout << i << "-> " << a << ' ' << b << endl;
    }
    return 0;
}

আউটপুট:

0-> 1 0
1-> 3 1
2-> 14 6
3-> 72 32
4-> 376 168
5-> 1968 880
6-> 10304 4608
7-> 53952 24128
8-> 282496 126336
9-> 1479168 661504
10-> 7745024 3463680
11-> 40553472 18136064
12-> 212340736 94961664
13-> 1111830528 497225728
14-> 5821620224 2603507712
15-> 30482399232 13632143360
16-> 159607914496 71378829312
17-> 835717890048 373744402432
18-> 4375875682304 1956951097344
19-> 22912382533632 10246728974336
20-> 119970792472576 53652569456640
21-> 628175224700928 280928500842496
22-> 3289168178315264 1470960727228416
23-> 17222308171087872 7702050360000512
24-> 90177176313266176 40328459251089408
25-> 472173825195245568 211162554066534400
26-> 2472334245918408704 1105661487394848768

সাইটে স্বাগতম, এবং প্রথম প্রথম উত্তর!
ডিজেএমসিএমহেম

0

কে, 37 বাইট

f:{:[x;*(1;0)*_mul/x#,2 2#3 1 5;1 0]}

অথবা

f:{:[x;*(1;0)*_mul/x#,(3 1;5 3);1 0]}

তারা উভয় একই জিনিস।


0

পাইথন 3, 49 বাইট

w=5**0.5;a=(3+w)**int(input())//2+1;print(a,a//w)

যদিও আমার মেশিনে, এটি কেবল সীমার ইনপুটগুলির জন্য সঠিক উত্তর দেয় 0 <= n <= 18

এটি বন্ধ ফর্ম সূত্রটি কার্যকর করে

w = 5 ** 0.5
u = 3 + w
v = 3 - w
a = (u ** n + v ** n) / 2
b = (u ** n - v ** n) / (2 * w)

এবং v ** nঅংশটি ছোট যে সত্যটি গ্রহণ করে এবং সরাসরি গণনার চেয়ে গোল করে গুণ করা যায়।


1
এটি কোনও বৈধ সমাধান নয় (আপনাকে অবশ্যই কোনও এন সমর্থন করতে হবে ), তবে আপনি যেহেতু সবচেয়ে কম হিসাবে নিকটবর্তী হচ্ছেন না তাই ডাউন ডাউন করার কোনও কারণ আমি দেখতে পাচ্ছি না। এটি একটি দুর্দান্ত সমাধান।
orlp

0

স্কিম, 97 বাইট

(define(r n)(let s([n n][a 1][b 0])(if(= 0 n)(cons a b)(s(- n 1)(+(* a 3)(* b 5))(+ a(* b 3))))))

0

সি 71 বাইট (60-প্রাক-প্রাথমিক ভেরিয়েবল সহ)

এখনও গল্ফ করার সুযোগ রয়েছে তবে কেবল এটি প্রমাণ করতে যে সি "দুর্দান্তভাবে ভয়ঙ্কর" হতে হবে না।

f(int n,int*a){for(*a=1,a[1]=0;n--;a[1]=*a+3*a[1],*a=(5*a[1]+4**a)/3);}

যদি মানগুলির মানগুলি {1,0 to থেকে শুরু করা হয়, তবে আমরা আরও ভাল করতে পারি।

f(int n,int*a){for(;n--;a[1]=*a+3*a[1],*a=(5*a[1]+4**a)/3);}

এটি পুনরাবৃত্তভাবে ম্যাপিংগুলি অ-> 3 এ + 5 বি, বি-> এ + 3 বি ব্যবহার করছে তবে পরিবর্তে খ এর নতুন মান থেকে একটি গণনা করে একটি অস্থায়ী পরিবর্তনশীল এড়ানো হচ্ছে।


আপনার সমাধানটি বড় ইনপুটগুলির জন্য পূর্ণসংখ্যার উপচে
পড়েছে

@orlp - এটি আপনার জন্য সি। মঞ্জুরিযুক্ত অন্তর্বর্তীকালীন গণনার কারণে এই সমাধানটি অন্যদের তুলনায় প্রথমদিকে ব্যর্থ হয় তবে আমি ডেটাটাইপ পরিবর্তন না করে এটি কেবলমাত্র কয়েকটি অতিরিক্ত পদক্ষেপ পরিচালনা করতে পারে। আপনি যে পরিসরটি সমর্থন করার আশা করছেন তা দেওয়ার জন্য কি প্রশ্নটি স্পষ্টভাবে পরিবর্তন করা উচিত? সম্ভবত এখন খুব দেরী হয়েছে যদিও।
আলকিমিস্ট

সমর্থনের কোনও ব্যাপ্তি নেই, কোনও সঠিক সমাধানের জন্য কোনও ইনপুট ব্যবহার করা উচিত। সিতে এর অর্থ হল যে আপনি
বিচ্ছিন্ন

এর a[*a=1]=0পরিবর্তে প্রস্তাব দিন*a=1,a[1]=0
সিলিংক্যাট

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