গল্ফ একটি সংখ্যাবৃদ্ধি ব্রেড


23

ব্রেড বর্ণনা

এই বেড়িগুলিতে, যখন একটি স্ট্র্যান্ড অন্য স্ট্র্যান্ডের উপরের অংশটি অতিক্রম করে তখন এটি অন্য স্ট্র্যান্ডের মান নিজেই যুক্ত করে এবং অন্যান্য সমস্ত স্ট্র্যান্ডের মানগুলি এর মধ্য দিয়ে যায়। বিনুনির তিনটি স্ট্র্যান্ড রয়েছে এবং প্রতিটি স্ট্র্যান্ড ১ থেকে শুরু হয় প্রথম ক্রসওভারটি মাঝের স্ট্র্যান্ডের উপরে বামতম স্ট্র্যান্ড ক্রসিং। পরবর্তী ক্রসওভারটি হ'ল নতুন মাঝের স্ট্র্যান্ড (আগে সবচেয়ে বামতম স্ট্র্যান্ড) এর উপরে ডান দিকের স্ট্র্যান্ড ক্রসিং। ক্রসওভার এই দুটি পদক্ষেপ পুনরাবৃত্তি। অন্য কথায়, প্রথম ক্রসওভারটি [a, b, c] -> [b, a+b, c]এবং দ্বিতীয়টি [a, b, c] -> [a, b+c, b]। এই নিয়মগুলি এখানে ব্যবহার করে বিনুনির প্রথম ছয় স্তর:

1,1,1
1,2,1
1,3,2
3,4,2
3,6,4
6,9,4

তোমার কাজ

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

পরীক্ষার কেস (1-ভিত্তিক)

1 -> 1,1,1

2 -> 1,2,1

5 -> 3,6,4

10 -> 28,41,19

উত্তর:


7

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

7Bi:"2:4PB@EX!Y*

ইনপুট 0-ভিত্তিক।

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

ব্যাখ্যা

একটি সারি ভেক্টর দেওয়া [a b c], পরের ভেক্টর ম্যাট্রিক্স-পরে এটি কোনও দ্বারা গুণ করে প্রাপ্ত হয়

[1 0 0;
 0 1 1;
 0 1 0]

অথবা

[0 1 0;
 1 1 0;
 0 0 1]

পুনরাবৃত্তি সূচকটি বিজোড় বা সমান কিনা তার উপর নির্ভর করে। উদাহরণস্বরূপ, ম্যাট্রিক্স পণ্য [1 3 2]*[0 1 0; 1 1 0; 0 0 1]দেয় [3 4 2]। তারপর [3,4,2]*[1 0 0; 0 1 1; 0 1 0]দেয় [3 6 4], ইত্যাদি।

এটিও নোট করুন যে দ্বিতীয় ম্যাট্রিক্স প্রথম ঘোরানো 180 ডিগ্রির সমান, যা কয়েকটি বাইট সংরক্ষণ করতে ব্যবহার করা যেতে পারে।

7        % Push 7
B        % Convert to binary. Gives [1 1 1]. This is the initial level
i        % Take input n
:        % Push range [1 2 ... n]
"        % For each
  5      %   Push 5
  I:     %   Push range [1 2 3]
  -      %   Subtract, element-wise: gives [4 3 2]
  B      %   Convert to binary. This gives the matrix [1 0 0; 0 1 1; 0 1 0]
  @      %   Push current iteration index
  E      %   Multiply by 2. Gives 2 in the firt iteration, 4 in the second etc
  X!     %   Rotate matrix 90 degrees either 2 or 0 times
  Y*     %   Matrix multiply
         % End. Implicitly display

আপনি কি পদক্ষেপগুলি জুড়ে দেওয়ার কথা বিবেচনা করেছেন? এইভাবে আপনার একটি ম্যাট্রিক্স রয়েছে [[0, 1, 0], [1, 1, 1], [1, 1, 0]]এবং শুরু করার বিভিন্ন অবস্থানগুলি সমান এবং বিজোড়ের জন্য বেশ সমানn
পিটার টেলর

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

5

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

f p@(a,b,c)=p:(b,a+b,c):f(b,a+b+c,a+b)
(f(1,1,1)!!)

এটি 0-ভিত্তিক সূচক ব্যবহার করে। ব্যবহারের উদাহরণ: (f(1,1,1)!!) 10-> (28,60,41)

fবেণী ত্রিগুণগুলির অসীম তালিকা তৈরি করে এবং (f(1,1,1)!!)নবমটিকে বেছে নিয়েছে। fনিজেই একটি সহজ পুনরাবৃত্তি যা তার যুক্তিগুলির একটি তালিকা তৈরি করে, তার পরে বাম ক্রসওভার এবং বাম এবং ডান ক্রসওভার সহ একটি পুনরাবৃত্তি কল।


4

রুবি, 60 57 বাইট

->n{f=->x{x<2?1:f[x-1]+f[x-3]};[f[n-2|1],f[n],f[n-1&-2]]}

স্তরগুলি 1-ভিত্তিক।

নিম্নলিখিত সূত্রের ভিত্তিতে:

f(-1) = 1
f(0)  = 1
f(1)  = 1
f(x)  = f(x-1) + f(x-3)

braid(x) = {
    [f(x-1), f(x), f(x-2)]  if x is even,
    [f(x-2), f(x), f(x-1)]  if x is odd
}

কিছু নিফটি বিটওয়াইজ শেননিগান দিয়ে 3 বাইটের জন্য নীলকে ধন্যবাদ জানাই।


1
Bitwise FTW এর অপারেটরদের: [f[n-2|1],f[n],f[n-1&-2]]
নিল

@ নীল এটি বেশ ঝরঝরে, ধন্যবাদ!
ডোরকনবব


3

জেলি , 14 বাইট

Ḋ+\;Ḣ
6BÇ⁸¡Ṛ⁸¡

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

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

6BÇ⁸¡Ṛ⁸¡  Main link. Argument: n (integer)

6B        Convert 6 to binary, yielding [1, 1, 0], which is the braid at index 0.
  Ç⁸¡     Call the helper link n times.
     Ṛ⁸¡  Reverse the resulting array n times.


Ḋ+\;Ḣ     Helper link. Argument: [a, b, c] (integer array)

Ḋ         Dequeue, yielding [b, c].
 +\       Cumulative sum, yielding [b, b+c].
   ;Ḣ     Concatenate with the head of [a, b, c], yielding [b, b+c, a].

2

টিআই-বেসিক, 58 বাইট

এক-ভিত্তিক।

Prompt N
{1,1,1
For(I,1,Ans
If fPart(I/2
Then
{Ans(2),Ans(1)+Ans(2),Ans(3
Else
{Ans(1),Ans(2)+Ans(3),Ans(2
End
End

এই 58 বাইট কেমন? আমি 114 গণনা করছি .. আমি কিছু মিস করছি?
ব্রিটিশবাদী

@ ব্রায়ান্টিস্ট টিআই-বেসিক কমান্ডগুলি এক বা দুটি বাইট দীর্ঘ। যেমন Promptএকটি 2-বাইট কমান্ড।
জংহওয়ান মিন

পছন্দ করেছেন আমার এমন কিছু অনুভূতি হয়েছিল যা আমি দেখছি না was অপরিচিত অন্যদের জন্য আমি আমার মন্তব্যটি রেখে দেব।
ব্রিটিশবাদী

2
কোন টোকেনগুলি এক বা দুটি বাইট হয় তা দেখতে আপনি টিবাসিকদেব.উইকিডোট.com
টোকেন্স

@ জংহওয়ানমিন Prompt কেবল একটি বাইট। তবে টোকেনের ধারণাটি ব্যাখ্যা করার জন্য ধন্যবাদ :)
টিমটেক

2

পাওয়ারশেল 2+, 75 বাইট

1-ভিত্তিক সূচক

$a=1,1,0;1..$args[0]|%{$d=(0,2)[$_%2];$a[1],$a[$d]=($a[1]+$a[$d]),$a[1]};$a

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

লুপটি সর্বদা একবার চালিত হয় বিনা স্তরের ক্ষেত্রে 1আমি কেবল একটি অ্যারের সাথে শুরু করি 1,1,0তাই এটি তৈরির সাথে অ্যালগরিদমের ফলাফল 1,1,1

$a[1]সর্বদা মাঝখানে হয়, তবে আমি কেবলমাত্র নির্ধারণ করি যে অন্যান্য উপাদান সূচক ( $d) বর্তমান স্তরটি সমান বা বিজোড় কিনা তার ভিত্তিতে 0বা 2হবে কিনা। পাওয়ারশেল একবারে একাধিক অ্যাসাইনমেন্টকে সমর্থন করে তাই অদলবদল সহজ হয়ে যায় $x,$y=$y,$xযা মূলত আমি অ্যারের উপাদানগুলির সাথে যা করছি, কেবলমাত্র সেই অ্যাসাইনমেন্টের মধ্যে সংযোজন এম্বেড করে।


2

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

x=>(f=y=>y<2?1:f(y-1)+f(y-3),[f(x-2|1),f(x),f(x-1&-2)])

repl.it

1 ভিত্তিক

এটি @ নীলের দুর্দান্ত বিটওয়াইস গল্ফ সহ @ ডোরকনব্বের রুবি উত্তরের একটি বন্দর।


1

বেফুঞ্জ, 64 বাইট

110p100p1&v
01:\_v#:-1<\p00<v\+g
..g.@>_10g
\1-:!#^_\:00g+\v>10p

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

ব্যাখ্যা

110p                Initialise a to 1 (at location 1;0).  
    100p            Initialise c to 1 (at location 0;0).
        1           Initialise b to 1 (on the stack, since it'll be most frequently used).
         &v         Read n from stdin and turn down.

          <         The main loop starts here, executing right to left.
        -1          Decrement n.
    _v#:            Duplicate and check if zero; if not, continue left.
   \                Swap b to the top of the stack, leaving n below it.
01:            g    Make a duplicate copy, and read a from memory (at location 1;0). 
              +     Add a to b, the result becoming the new b.
            v\      Swap the original b to the top of the stack and turn down.
            >10p    Turn around and save the original b as a (at location 1;0).
\1-                 Swap n back to the top of the stack and decrement.
   :!#^_            Duplicate and check if zero; if not continue right.
        \           Swap b to the top of the stack, leaving n below it.
         :00g       Make a duplicate copy, and read c from memory (at location 0;0).
             +      Add c to b, the result becoming the new b.
              \v    Swap the original b to the top of the stack and turn down.
            p00<    Turn around and save the original b as c (at location 0;0).
           \        Swap n back to the top of the stack.
          <         And repeat the loop from the beginning.

      >             If either of the zero tests succeed, we end up on line 3 going right.
       _            This just drops the n that is now zero, and continues to the right.
        10g         Read the final value of a (at location 1;0).
..                  Output a along with the b that was already on the stack.
  g                 Read the final value of c (the 0;0 location is implied).
   .@               Output c and exit.


1

জাভা 8, 121

এটি এক-ভিত্তিক স্তরগুলি ব্যবহার করে:

(int l)->{int a=1,b=a,c=a,i=a;while(i<l)if(i++%2>0){b^=a;a^=b;b=(a^b)+a;}else{b^=c;c^=b;b=(c^b)+c;}return a+","+b+","+c;}

পরীক্ষামূলক কর্মসূচী সহ উদ্বিগ্ন:

import java.util.function.IntFunction;

public class GolfANumericalGrowingBraid {

  public static void main(String[] args) {
    for (int level : new int[] { 1, 2, 5, 10 }) {
      output((int l) -> {
        int a = 1, b = a, c = a, i = a;
        while (i < l) {
          if (i++ % 2 > 0) {
            b ^= a;
            a ^= b;
            b = (a ^ b) + a;
          }
          else {
            b ^= c;
            c ^= b;
            b = (c ^ b) + c;
          }
        }
        return a + "," + b + "," + c;
      } , level);
    }
  }

  private static void output(IntFunction<String> function, int level) {
    System.out.println(function.apply(level));
  }
}

আউটপুট:

1,1,1
1,2,1
3,6,4
28,41,19


0

গেমমেকার ল্যাঙ্গুয়েজ, 113 বাইট

ডোরকনব এর পুনরাবৃত্ত সমাধানের উপর ভিত্তি করে ওয়ান ইনডেক্সযুক্ত। আপনি গেমমেকারে একবারে কোনও আদিম অ্যারে কেন শুরু করতে পারবেন না দয়া করে জিজ্ঞাসা করবেন না, আমি সত্যিই জানি না ...

প্রধান প্রোগ্রাম (69 বাইট):

a=argument0 if a mod 2c=1b[0]=a(a-c-1)b[1]=a(a)b[2]=a(a+c-2)return b

সাবপ্রগ্রাম a(46 বাইট):

a=argument0 if a<2return 1return a(a-1)+a(a-3)

0

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

{(1 xx 3,->[\a,\b,\c]{$++%2??(a,b+c,b)!!(b,b+a,c)}...*)[$_]}

জিরো-ভিত্তিক।

সোজাসুজিভাবে অলস অসীম অনুক্রম তৈরি করেছে এবং তারপরে এটি সূচক করে।
সম্ভবত আরও ভাল পন্থা আছে।


0

Clojure, 98 বাইট

#(ffirst(drop %(iterate(fn[[v[a b c d]]][[(v a)(+(v b)(v c))(v d)][b a d c]])[[1 1 0][0 1 2 1]])))

বর্তমান মান vএবং কোন অবস্থান থেকে পরবর্তী রাউন্ডের জন্য সমষ্টি করা উচিত তা ট্র্যাক করে । [1 1 1]1-ভিত্তিক সূচীকরণের আগে একটি রাজ্য শুরু হয় ।


0

সি # 88 86 বাইট

f(int n,int a=1,int b=1,int c=1)=>n>1?n--%2>0?f(n,b,a+b,c):f(n,a,b+c,b):a+","+b+","+c;

ব্যাখ্যা

f(int n,int a=1,int b=1,int c=1)=>  //Using an expression bodied function to allow for defaults and remove return statement
    n>1?                            //recurse or return result
        n--%2>0?                    //get odd or even then decrement n
            f(n,b,a+b,c)            //odd recursion
           :f(n,a,b+c,b)            //even recursion
       :a+","+b+","+c;              //build output

0

গণিত, 68 বাইট

If[#<3,{1,#,1},{{#,+##2,#2}&,{#2,#+#2,#3}&}[[Mod[#,2,1]]]@@#0[#-1]]&

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

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