যোগফল বিয়োগ ক্রম


26

যোগফল বিয়োগ ক্রম

প্লাস-বিয়োগ সিকোয়েন্সটি এমন একটি যা দুটি বীজ দিয়ে শুরু হয় a(0)এবং b(0)। এই অনুক্রমের প্রতিটি পুনরাবৃত্তিটি ক্রমের পূর্ববর্তী দুটি সদস্যের সংযোজন এবং বিয়োগফল। যে, a(N) = a(N-1) + b(N-1)এবং b(N) = a(N-1) - b(N-1)

উদ্দেশ্য অসম্পূর্ণতা বা Kপ্রদত্ত প্রথম পদক্ষেপে , প্লাস-বিয়োগের ক্রম উত্পাদন করে K। আপনি এটি অসীম আউটপুট প্রোগ্রাম, একটি জেনারেটর বা কোনও ফাংশন / প্রোগ্রাম ব্যবহার করে এটি করতে পারেন যা প্রথম Kপদক্ষেপ দেয় । আউটপুট ক্রমটি কোনও বিষয় নয়, যতক্ষণ এটি সুসংগত হয়। (অর্থাত, b(K) a(K)বা a(K) b(K), কিছু অ সাংখ্যিক মধ্যে অ সম্পর্কে newline বিভাজক যান।) আউটপুট ইনপুট দিয়ে শুরু হবে।

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

ইনপুটগুলির জন্য 10 2(এর a(0) b(0)জন্য, এটি প্রথম কে পদ্ধতির (বা অসীম পদ্ধতির সাবসেকশন) এর সম্ভাব্য আউটপুট:

10     2
12     8
20     4
24     16
40     8
48     32
80     16
96     64
160    32
192    128
320    64
384    256
640    128
768    512
1280   256
1536   1024
2560   512
3072   2048
5120   1024
6144   4096
10240  2048
12288  8192
20480  4096
24576  16384
40960  8192
49152  32768
81920  16384
98304  65536

ইনপুটগুলির জন্য 2 20 10( a(0) b(0) k):

2     20
22   -18
4     40
44   -36
8     80
88   -72
16    160
176  -144
32    320
352  -288

এটি একটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতে।


আমি একটি (2 এন) = এ (0) · 2ⁿ এবং বি (2 এন) = এন (0) · 2ⁿ লক্ষ্য করেছি তবে এটি সম্ভবত এখানে দরকারী নয়।
নীল

মধ্যে অ সাংখ্যিক বিভাজক পারি aএবং bএকটি newline হবে?
সোয়েভার

@ স্যুভার নং, এটি পারে না।
কনর ও'ব্রায়ান

@ CᴏɴᴏʀO'Bʀɪᴇɴ স্পষ্টতার জন্য ধন্যবাদ!
সোয়েভার

1
একটি ক্রম ফিরিয়ে দেওয়া ঠিক আছে @ Guifa
কনর ও'ব্রায়েন

উত্তর:


13

জেলি , 5 বাইট

ṄI;Sß

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

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

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

ṄI;Sß  Main link. Argument: [b[n], a[n]] (n = 0 for original input)

Ṅ      Print [b[n], a[n]] to STDOUT.
 I     Compute the increments of the list, i.e., [a[n] - [b[n]].
   S   Compute the sum of the list, i.e., b[n] + a[n].
  ;    Concatenate the results to the left and to the right.
    ß  Recursively call the main link.

কি দারুন. এটি বেশ চিত্তাকর্ষক।
কনর ও'ব্রায়ান

কী Main linkআসলে এর অর্থ কি?
বিড়াল 22

4
@ কেট এটি সি এর মূল ফাংশনের মতো। প্রতিটি লাইন একটি পৃথক ফাংশন / লিঙ্ক সংজ্ঞায়িত করে, তবে শেষটি প্রোগ্রামটি সঞ্চালিত হওয়ার পরে স্বয়ংক্রিয়ভাবে কল হয়।
ডেনিস

> জেলি প্রোগ্রামগুলিতে প্রায় 257 টি পর্যন্ত ইউনিকোডের বিভিন্ন অক্ষর থাকে। বাইটে 256 বিট নেই?
thepiercingarrow

@ মার্কউইট এবং লাইনফিডগুলি বিনিময়যোগ্য হিসাবে ব্যবহার করা যেতে পারে। আপনি উভয়ই ইউটিএফ -8 মোডে ব্যবহার করতে পারেন, তবে কেবলমাত্র \x7fজেলি কোড পৃষ্ঠাতে সেগুলি উপস্থাপন করতে পারে।
ডেনিস

5

পাইথন 2, 31 বাইট

def f(a,b):print a,b;f(a+b,a-b)

চিরকাল মুদ্রণ। ভাল, শেষ পর্যন্ত আপনি পুনরাবৃত্তি সীমা অতিক্রম করেছেন, তবে এটি একটি সিস্টেম সীমাবদ্ধতা।


পুনরাবৃত্তি ত্রুটি উত্থাপিত হওয়ার আগে আপনি কতক্ষণ এটি চালিয়ে যেতে পারবেন বলে মনে করেন?
আর কাপ,

@ আর.ক্যাপ এটি 1000 ডলার। আপনি যাই হোক না কেন আপনি মাধ্যমে চান এই সীমা সেট করতে পারেনsys.setrecursionlimit
Mathias711

@ আর.কেপ আমার মেশিনে প্রায় 10 সেকেন্ড সময় নেয়।
xnor

পুনরাবৃত্তি ত্রুটি বাড়ানোর আগে 10 সেকেন্ড? কি দারুন. পাইথন 3-এ, আমি সোজা 30 মিনিটের জন্য আমাকে চালিয়ে যেতে দিয়েছি এবং কোনও ত্রুটি উত্থাপিত হয়নি। আমি কোনও একটির জন্য 2000 এর বেশি অঙ্ক মুদ্রণ করতে সক্ষম হয়েছি! আমার অনুমান whileযে আপনি যা করছেন তার চেয়ে একটি লুপ আলাদা আচরণ করে ves
আর কাপ,

আমি এটি একটি ল্যাম্বডা দিয়ে ব্যবহার করার চেষ্টা করেছি তবে এটি আরও বাইট নিয়েছে ( f=lambda a,b:print(a,b)or f(a+b,a-b))
মিল্কিওয়ে 90

5

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

`tDtswPdhT

এই সংস্করণটি প্লাস-বিয়োগ সিকোয়েন্সে সীমাহীন সংখ্যক উপাদানগুলিকে আউটপুট দেবে।

অনলাইনে চেষ্টা করে দেখুন! (অসীম লুপের কারণে চলার পরে এটি বন্ধ করুন)

ব্যাখ্যা

    % Implicitly grab input as a two-element array [a,b]
`   % do...while loop
tD  % Duplicate and display the top of the stack
ts  % Duplicate [a,b] and add them together
w   % Swap the top two elements on the stack
P   % Swap the order of b and a in preparation for diff
d   % Compute the difference between b and a
h   % Horizontally concatenate [a+b, a-b]
T   % Explicit TRUE to make it an infinite loop
    % Implicit end of the do...while loop

এটি কি স্বয়ংক্রিয়ভাবে সমস্ত খুব বড় সংখ্যাকে বৈজ্ঞানিক স্বরলিপিতে রূপান্তর করে?
আর কাপ,

@ আর কেপ এটিকে দেখে মনে হচ্ছে। এটি মূল সমস্যা বিবৃতিতে স্পষ্টভাবে নিষিদ্ধ বলে মনে হয় না।
সিউভার

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

ওয়েল তাই ম্যাটল্যাব (যা এমএটিএল হুডের নীচে ব্যবহার করে), আপনি আউটপুট ফর্ম্যাটটিকে যা খুশি তাই পরিবর্তন করতে পারেন। এমএটিএল এর ডিফল্ট হ'ল বৈজ্ঞানিক স্বরলিপিতে স্যুইচ করার আগে 15 টি সংখ্যা পর্যন্ত প্রদর্শন করা।
মামলা

ওপ্পস আমার খারাপ, দুঃখিত, মুছে ফেলা হয়েছে;)
thepiercingarrow

3

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

a#b=a:b:(a+b)#(a-b)

সংখ্যার অসীম ক্রম উত্পাদন করে। ব্যবহারের উদাহরণ:

Prelude> take 20 $ 2#20

[2,20,22,-18,4,40,44,-36,8,80,88,-72,16,160,176,-144,32,320,352,-288]

3

পাইথ, 10 9 বাইট

1 বাইট এর জন্য @ আইস্যাচকে ধন্যবাদ

#=Q,s
Q-F

জোড়গুলির অসীম অনুক্রম মুদ্রণ করে।

$ pyth plusminus.p <<< "[10,2]" | head -n 15
[10, 2]
[12, 8]
[20, 4]
[24, 16]
[40, 8]
[48, 32]
[80, 16]
[96, 64]
[160, 32]
[192, 128]
[320, 64]
[384, 256]
[640, 128]
[768, 512]
[1280, 256]

1
প্রথম এবং শেষ Qগুলি সরানো যেতে পারে - পাইথ এগুলিকে পুরোপুরি পূরণ করবে।
isaacg

@ আইসএইচজি তাই তখন বাস্তবায়ন হয়েছে? কুল। আমি প্রথমটিকে সরিয়ে দেওয়ার চেষ্টা করেছি, তবে এটি কার্যকর হয়নি।
পূর্কাকোদারী

এটি আশ্চর্যের বিষয়, প্রথমটিকে আমার মেশিনে কাজ করা অপসারণ।
isaacg

3

সি, 81 বাইট

a,b;main(c){for(scanf("%d%d%d",&a,&b,&c);c--;a+=b,b=a-b-b)printf("%d %d\n",a,b);}

3

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

প্রথম-কে পদ্ধতি ব্যবহার করে । নিম্নলিখিতগুলির জন্য ইনপুট:

k
[a, b]

কোড:

FD=OsƂ

ব্যাখ্যা:

F        # For N in range(0, k).
 D=      # Duplicate top of the stack and print without popping.
   O     # Sum up the array.
    sÆ   # Swap and perform a reduced subtraction.
      ‚  # Pair the top two elements. a, b --> [a, b]

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


1
কোডটি অস্পষ্টভাবে ভাষার নামের সাথে স্মরণ করিয়ে দেয় ...
কনর ও'ব্রায়ান

@ সিও'বা হাহাহাহা, অপঠিত উভয়ই
আদনান


3

এপিএল, 37 টি অক্ষর

{⍺←3⊃3↑⍵⋄⎕←z←2↑⍵⋄⍺=1:⋄(⍺-1)∇(+/,-/)z}

হিসাবে ব্যবহার করা যেতে পারে

    {⍺←3⊃3↑⍵⋄⎕←z←2↑⍵⋄⍺=1:⋄(⍺-1)∇(+/,-/)z} 10 2
10 2
12 8
20 4
24 16
40 8
48 32
80 16
[...]

অথবা

      {⍺←3⊃3↑⍵⋄⎕←z←2↑⍵⋄⍺=1:⋄(⍺-1)∇(+/,-/)z} 10 2 6
10 2
12 8
20 4
24 16
40 8
48 32

3

ম্যাথগল্ফ , 8 বাইট

ô`αp‼+-∟

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

বিপরীত ক্রমে ইনপুট নেয়, তবে এটি কেবল কারণ তারা স্ট্যাকের দিকে ধাক্কা দেয়। অন্যথায় এটি 1 বাইট দীর্ঘ হবে। আউটপুট থেকে 2-3 বাইট আসে। প্রকৃতপক্ষে প্রতি জোড়া এক মুদ্রণের প্রয়োজন ছাড়াই প্রোগ্রামটি হতে পারে æ`‼+-∟(সিক্যুজের উপাদানগুলি অনির্দিষ্টকালের জন্য ভরাট করে), বা É‼+-∟(প্রথমটি ডিবাগ করা বাদে ক্রমের সমস্ত উপাদান মুদ্রণ করে, যতক্ষণ -dপতাকাটি সক্রিয় থাকবে) ।

ব্যাখ্যা

ô      ∟   do-while-true
 `         duplicate the top two items
  αp       wrap last two elements in array and print
    ‼      apply next two operators to the top stack elements
     +     pop a, b : push(a+b)
      -    pop a, b : push(a-b)

হাই ম্যাক্স কখন থেকে নিশ্চিত নয়, তবে বর্তমানে টিআইওর ম্যাথগল্ফ সংস্করণটি স্ট্রিং ইনপুটটি মোটেও গ্রহণ করে না .. প্রোগ্রামটির জন্য কোনও কোড ছাড়াই আমি কী বিল্টিন ব্যবহার করি তা বিবেচনা করে না, যদি স্ট্রিং ইনপুট এর মতো দেওয়া হয় তবে উদাহরণস্বরূপ ABC, stdin = StdIn(line)পাইথন
কোডটিতে

1
নিবন্ধন করুন স্ট্রিং ইনপুট হিসাবে দেওয়া উচিত 'ABC'বা "ABC"। অভ্যন্তরীণভাবে, ast.literal_evalইনপুট পার্স করতে ব্যবহৃত হয়। এখনও কিছু quirks আউট ইস্ত্রী করা প্রয়োজন, কিন্তু আপনি করতে সক্ষম হওয়া উচিত এই
ম্যাক্সবিব

আহ, ঠিক আছে। বিটিডব্লিউ, কোনও স্ট্রিং / সংখ্যা নির্দিষ্ট আকারের অংশে বা কিছু পরিমাণ সমান আকারের অংশে বিভক্ত করার জন্য কি কোনও বিল্টিন রয়েছে? অর্থাত ABCDEFকরতে [AB, CD, EF]?
কেভিন ক্রুইজসেন

এনভিএম, সম্ভবত সেখানে নেই, তবে আমি এটি করার একটি উপায় খুঁজে পেতে সক্ষম হয়েছি: 2ô_2<\1>](ইনপুট-দৈর্ঘ্য 6-এ কঠোর কোডড এবং আকার 2 এর অংশে বিভক্ত হয়েছি, যেহেতু আমার যা প্রয়োজন ছিল তা সম্ভবত ছিল, তবে সম্ভবত হওয়া উচিত) জেনেরিক ইনপুট-আকার এবং খণ্ড-আকারের জন্য কাজ করার জন্য পরিবর্তনযোগ্য)।
কেভিন ক্রুইজসেন

1
/n

2

পাইথন 3.5, 55 43 বাইট:

def q(a,b):
 while 1:print(a,b);a,b=a+b,a-b

আপাতদৃষ্টিতে চিরকালের জন্য সঠিক ক্রমটি প্রিন্ট করে। আমি কোনও ত্রুটি না বাড়িয়ে প্রায় 30 মিনিটের জন্য এটি চালিয়ে যেতে সক্ষম হয়েছি, এবং প্রোগ্রামটি প্রথম সংখ্যার জন্য 2301 সংখ্যা এবং দ্বিতীয়টির জন্য 1150 সংখ্যা মুদ্রণ করেছে! এর উপর ভিত্তি করে, আমি অনুমান করছি যে চালানোর জন্য পর্যাপ্ত হার্ডওয়্যার সরবরাহ করা হওয়ায় এটি আরও দীর্ঘ সময় ধরে চলতে পারে এবং আরও সংখ্যক অঙ্ক মুদ্রণ করতে পারে এবং তাত্ত্বিকভাবে কোনও পুনরাবৃত্তি সীমাও নেই, whileলুপের সৌজন্যে !


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

@ নীল টিপস জন্য ধন্যবাদ। :)
আর কাপ,

আমি বিভ্রান্ত; আপনি whileএখন একটি এবং পুনরাবৃত্তি কল উভয় পেয়েছেন ...
নীল

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

2

রেং v.3.2, 9 বাইট (স্ব-উত্তর, প্রতিযোগী)

ii¤ææö±2.

দুটি ইনপুট ( a b) এবং আউটপুট নেয় b aএখানে চেষ্টা করুন!

iইনপুট দু'বার নেয়, ¤স্ট্যাকটিকে সদৃশ করে, æএকটি সংখ্যা এবং একটি স্থান মুদ্রণ করে (এবং দু'বারের মতো করে করে), öএকটি নতুন লাইন প্রিন্ট ±করে , আপনি যা আশা করতে পারেন তা করেন এবং 2.পরবর্তী দুটি অক্ষর এড়িয়ে যান, ইনপুট প্রাপ্ত অক্ষরগুলির চারপাশে মোড়ানো।


2
হুঁ, এই হায়ারোগ্লাইফিক্সগুলির প্রত্যেকটি আমার মতো একজন নতুনকে কী করে তা বোঝাতে আপনি কি আপত্তি করবেন? :)
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি এই রহস্যটি ব্যাখ্যা করেছি। :)
কনর ও'ব্রায়েন

2

পাইথন 2.7, 56 , 42 বাইট:

a,b=input()
while 1:print a,b;a,b=a+b,a-b

সরল লুপ যা হয় চিরকাল মুদ্রণ করে (ইশ)।


বাইটগুলি সংরক্ষণ করতে আপনি ইনডেন্ট স্তরের জন্য একটি একক স্থান ব্যবহার করতে পারেন। এছাড়াও, আপনাকে কেবল একটি বা অন্য দুটি পদ্ধতি করতে হবে না, তাই আপনি ডিফল্ট প্যারামিটারটি সরাতে পারেন।
কনর ও'ব্রায়ান

ওহ অভিশাপটি নোটপ্যাডটি 4 টি স্পেসে আমার ট্যাব তৈরির বিষয়টি লক্ষ্য করে না, এবং নিশ্চিত বিষয় আমি এটিকে একটিতে সীমাবদ্ধ রাখব, ধন্যবাদ।
সেরডালিস

আপনি যদি প্রথম লাইনটি এতে পরিবর্তন করে একটি প্রোগ্রাম করেন তবে আপনি a,b=input()ইনডেন্টটি সরাতে পারবেন।
xnor

@ এক্সনোর ধন্যবাদ, কেবল 1 বাইট সাশ্রয় করেছে তবে এটি আর কুৎসিত নয়!
সের্ডালিস

2

ব্যাচ, 54 বাইট

@echo %1 %2
@set/aa=%1+%2
@set/ab=%1-%2
@%0 %a% %b%

নোট করুন যে CMD.EXE 32-বিট স্বাক্ষরিত পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ, তাই এটি দ্রুত উপচে পড়বে এবং আবর্জনা এবং ত্রুটি বার্তাগুলি মুদ্রণ করবে।


1
সর্বদা এখানে কাছাকাছি একটি ব্যাচের উত্তর দেখতে ভালবাসেন! : ডি
কনর ও'ব্রায়েন

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ আমি এটি বিশেষত আপনার জন্য লিখেছি।
নীল

2

জুলিয়া, 25 বাইট

a<|b=[a b]|>show<a+b<|a-b

সর্বাধিক সিনট্যাক্স অপব্যবহার। জুলিয়া অদ্ভুতএটি অনলাইন চেষ্টা করুন!

বিকল্প সংস্করণ, 29 বাইট

লক্ষ্য করুন আউটপুট অবশেষে ওভারফ্লো যদি না আপনি কল হবে <|একটি উপর BigInt । দুর্ভাগ্যক্রমে, এই ক্ষেত্রে showপ্রতিটি অ্যারে উপসর্গ করা হবে BigInt। আরও চারটি বাইটের ব্যয়ে, আমরা সমস্ত সংখ্যার প্রকারের জন্য সাদা স্থান-পৃথক আউটপুট তৈরি করতে পারি।

a<|b="$a $b
"|>print<a+b<|a-b

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

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

আমরা বাইরের <|উদ্দেশ্যে অপারেটর সংজ্ঞায়িত করি । এটি জুলিয়ার সাম্প্রতিক সংস্করণগুলিতে অপরিবর্তিত, তবে এখনও পার্সার দ্বারা অপারেটর হিসাবে স্বীকৃত। যদিও \(স্পষ্টভাবে পূর্ণসংখ্যার জন্য সংজ্ঞায়িত নয়) এক বাইট খাটো, তার উচ্চ প্রাধান্য প্রতিস্থাপন করতে হবে a+b<|a-bসঙ্গে (a+b)\(a-b)(+3 বাইট) অথবা \(a+b,a-b)(+2 বাইট)।

কখন a<|bমৃত্যুদন্ড কার্যকর করা হয়, এটি STDOUT এ [আবৃত্তি]show মুদ্রণের জন্য কল করে শুরু হয় । তারপরে, পুনরাবৃত্তির সাথে যোগফল বা পার্থক্যটি কল করে।a+b<|a-b<|

পুনরাবৃত্তি যেহেতু অসীম, তাই তুলনা <কখনই করা হয় না; এটির একমাত্র উদ্দেশ্য কোডের দুটি অংশকে শৃঙ্খলিত করা। এটি আরও সোজা বিকল্পের চেয়ে দুটি বাইট সংরক্ষণ করে ([a b]|>show;a+b<|a-b)


2

পার্ল 6 , 23 বাইট (অসীম)

সম্পাদনা করুন: জোকিংকে ধন্যবাদ, সিকোয়েন্স সংস্করণটি এখন সবচেয়ে সংক্ষিপ্ত ( .sayওপি থেকে স্পষ্টতা অনুসারে সরানোও হয়েছে :

{@_,{.sum,[-] |$_}...*}

Tio: InfiniteSeq

পুরানো কার্যকরী উত্তর

->\a,\b {(a,b).say;f(a+b,a -b)}

Tio: InfiniteFunc

নোট করুন যে পার্ল 6 এর কোনও পুনরাবৃত্তি সীমা নেই, এটি নিখুঁতভাবে উপলব্ধ মেমরির উপর ভিত্তি করে, সুতরাং বোমা ফেলার আগে এটি মিলিয়নে পৌঁছে যাবে।


অসীমের জন্য 23 বাইট
জো কিং

@ জোকিং: দুর্দান্ত! .সাম না ভাবার জন্য আমি বরং নির্বোধ বোধ করি। আমি মনে করি যে প্রয়োজনীয়তাগুলি ফাংশনে আউটপুট করা বাধ্যতামূলক (আমি স্পষ্টতা চেয়েছি, তবে বেশিরভাগের কাছে মনে হয় যে এটি ২২ টিও দেয়। tio.run/##K0gtyjH7n1upoJamYPu/… দিয়ে )
user0721090601

1

ফ্যাক্টর, 62 বাইট

:: f ( a b -- x ) a b "%s %s" printf a b + a b - f ; recursive

recursive, নাহলে কলস্ট্যাকটি খুব দ্রুত শেষ হয়ে যায়।


1

রুবি, 25 বাইট

এক্সনোর পাইথন সমাধানের উপর ভিত্তি করে । সম্ভবত আমি অন্য উত্তরে জেনারেটরের করব, কিন্তু এই প্রিন্ট হবে a, তারপর b, তারপর নতুন a, তারপরে নতুন b, সীমাহীনভাবে।

f=->a,b{p a,b;f[a+b,a-b]}

1

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

আমি এই ফাংশনটির জন্য একটি জেনারেটর লিখতে চেয়েছিলাম এবং তাই করেছি।

def f(a,b):
 while 1:yield a,b;a,b=a+b,a-b

পাইথন 3 এ, ক্রমটি এইভাবে উত্পন্ন হয়:

>>> gen = f(2, 20)
>>> next(gen)
(2, 20)
>>> next(gen)
(22, -18)
>>> next(gen)
(4, 40)
>>> next(gen)
(44, -36)
>>> next(gen)
(8, 80)

1

কমন লিস্প, 57

(lambda(a b)(loop(print`(,a,b))(psetf a(+ a b)b(- a b))))

ব্যবহার করে psetf, যা সমান্তরালে ভেরিয়েবলের মানগুলিকে এবং সরল loopসিনট্যাক্সকে প্রভাবিত করে ।


1

বাশ + জিএনইউ কোর্টিলস, 75 বাইট

a=$1
b=$2
for i in `seq $3`;{ echo -e "$a\t$b";c=$a;a=$((c+b));b=$((c-b));}

আবাহন:

./codegolf.sh 2 10 5

1

সিপি / এম 8080, 47 বাইট

z80 স্মৃতিবিজ্ঞান তবে 8080 এর কিছুই নেই, উত্স মন্তব্য করেছিল একবার ইনপুট না দিয়ে আউটপুট গণনা করার সিদ্ধান্ত নিয়েছে তবে সংক্ষিপ্ত ফাংশনটির নাম ধরে রাখা হয়েছে, হাত একত্রিত হয়েছে তাই এক্সএক্স এর ক্ষমা করুন যেখানে আমি বাইটের সংখ্যা জানি তবে কার্যকর হয়নি আউটপুট ঠিকানা বা অফসেট:

# setup
ld c, 2     0e 02

# loop
.s

# update H (temporarily in B)
ld a, h     7c
add l       85
daa         27
ld b, a     46

# update L
ld a, h     7c
sub l       95
daa         27
ld l, a     6f

# copy B back to H, output H
ld h, b     60
call +o     cd xx xx

# output L
ld b, l     45
call +o     cd xx xx

# repeat
jr -s       18 xx

# output a two-digit BCD value followed by a space
.o

# output high digit
ld a, b     78
rra         1f
rra         1f
rra         1f
rra         1f
call +ob    cd xx xx

# output low digit
ld a, b     78
call +ob    cd xx xx

# output a space
ld e, #$20  1e 20
call 5      cd 00 05

# return
ret         c9

# output a single BCD digit
.ob
and #$f     e6 0f
add #$30    c6 30
ld e, a     5f
call 5      cd 00 05
ret         c9

1

Clojure, 44 বাইট

#(iterate(fn[[a b]][(+ a b)(- a b)])[%1 %2])

ফাংশন যা একটি অসীম অলস ক্রম উত্পাদন করে।


1

পার্ল 5, 40 বাইট

প্রয়োজন -E(বিনামূল্যে)

sub a{say"@_";($c,$d)=@_;a($c+$d,$c-$d)}

বা (একই দৈর্ঘ্য)

$_=<>;{say;/ /;$_=$`+$'.$".($`-$');redo}

(আমি পরবর্তীকালে আঘাত করেছি কারণ এতে কিছু পুনরাবৃত্তির জন্য গোলাকৃতি ত্রুটি থাকা উচিত))

হাট-টিপ।

তবে আমার সন্দেহ হয় এখানে অবশ্যই একটি খাটো পার্ল 5 সমাধান থাকতে হবে।


1
যদি আরও সংক্ষিপ্ত সমাধান হয় তবে টন হসপেল এটি খুঁজে পাবেন। : পি
কনর ও'ব্রায়ান

কিছুটা সময় নিয়েছি, তবে আমি একটি ছোট্ট উপায়
Xcali

1

ফেরত , 21 বাইট

[¤.' ,$.'
,¤¤+2ª-F]=F

Try it here.

রিকারসিভ অপারেটর-ল্যাম্বদা। ব্যবহার:

[¤.' ,$.'
,¤¤+2ª-F]=F10 2F

ব্যাখ্যা

[                 ]=F  declare function F for recursion
 ¤.' ,$.'␊,            output top 2 stack items along with trailing newline
           ¤¤+2ª-      get plus and minus of top 2 stack items
                 F     recurse!

1

> <> , 26 বাইট

:?!;1-r:n48*o:@@:nao:@+}-$

এর মাধ্যমে কল করুন a, b, nস্ট্যাক, যেখানে nপালা পরিবর্তন সংখ্যা বা অসীম আউটপুট একটি নেতিবাচক মান। আউটপুট aএবং bএকটি স্পেস দ্বারা পৃথক।

ব্যাখ্যা হিসাবে, রানটাইমের সময় স্ট্যাকটি কীভাবে বিকশিত হয় তা এখানে:

abn
nba
nbaa
naab
naabb
nabab
nab+
+nab
+n-
+-n

আপনি এটি অনলাইনে অনুবাদকের পক্ষে ইতিবাচক পরিমাণে ঘুরতে চেষ্টা করতে পারেন তবে আপনাকে অসীম মোডটি পরীক্ষা করতে অফিসিয়াল পাইথন ইন্টারপ্রেটার ব্যবহার করতে হবে।

$ python fish.py -c ':?!;1-r:n48*o:@@:nao:@+}-$' -t 0.01 -v 10 2 -1
10 2
12 8
20 4
24 16
40 8
48 32
80 16
96 64
160 32
192 128
320 64
384 256
640 128
768 512
1280 256
1536 1024
2560 512
3072 2048
5120 1024
6144 4096
10240 2048
12288 8192
20480 4096
24576 16384
40960 8192
49152 32768
81920 16384
98304 65536
163840 32768
196608 131072
327680 65536
393216 262144
655360 131072
786432 524288
1310720 262144
[...]

1

ফাজি অক্টোো গুয়াকামোল , 17 16 বাইট

(অ-প্রতিযোগী, চ্যালেঞ্জের পরে বৈশিষ্ট্যগুলি ব্যবহার করে)

^^(:C.Zs.aZ.s.-)

ক্লায়েন্ট-পার্শ্ব ত্রুটির কারণে এটি করা কঠিন ছিল। কিন্তু আমি পেয়েছি!

walkthrough:

^^                # Get input twice, pushes it to the stack.
  (               # Start a infinite loop.
   :              # Prints the stack, and since it has [a,b] is just the output.
    C             # Copy the active stack to the inactive stack.
     .            # Shift the active stack.
      Z           # Reverse the stack.
       s          # Move the top item on the active stack to the top of the inactive.
        .         # Switch stacks again.
         a        # Add the top 2 items, giving the first new item.
          Z       # Reverse the stack, so we keep the 'a' safe and prepare for the 'b'.
           .      # Switch stacks.
            s     # Move the top item on the active stack to the top of the inactive stack.
             .    # Switch stacks.
              -   # Minus the top 2 items, giving 'b'.
               )  # End infinite loop.

আমি এফওজি সব জানি না, তবে আপনি :লুপের শুরুতে যেতে এবং দু'বার মুদ্রণের প্রয়োজনীয়তা সরাতে পারবেন না ?
কনর ও'ব্রায়ান

oooooh @ CᴏɴᴏʀO'Bʀɪᴇɴ ধন্যবাদ
আর

ব্যাখ্যাটি আপডেট করতে ভুলবেন না;)
কনর ও'ব্রায়ান

@ CᴏɴᴏʀO'Bʀɪᴇɴ Whadda ইয় মানে? : পি
আর

1

সিরিয়াসলি, 12 বাইট

,,1WX■@│+)-1

অসীম স্ট্রিমের আউটপুট দেয়, ফর্ম্যাটটি হয় b(n) a(n), প্রতি লাইনে এক জোড়া আউটপুট।

কোনও অনলাইন লিঙ্ক নেই কারণ ট্রাইআইটঅনলাইন অসীম লুপগুলি দিয়ে এত ভাল করে না।

ব্যাখ্যা:

,,1WX■@│+)-1
,,1           push a(0), push b(0), push 1
   W          while loop:
    X           discard the 1 (only used to make sure the while loop always runs)
     ■          print all stack elements, separated by spaces, without popping
      @│        swap, duplicate entire stack
        +)      push a(n) + b(n) (a(n+1)) and move it to the bottom of the stack
          -     push a(n) - b(n) (b(n+1))
           1    push 1 to make sure the loop continues

1

জে, 16 12 বাইট

0&(]+/,-/)~<

প্রদত্ত বীজের উপর ভিত্তি করে ক্রমটির জন্য কেবলমাত্র প্রথম কে মান তৈরি করে।

এই মন্তব্যটিতে @ রেন্ডোমরা দেখানো ট্রিক (বা সিনট্যাকটিক চিনি) ব্যবহার করে 4 বাইট সংরক্ষণ করেছেন

ব্যবহার

   f =: 0&(]+/,-/)~<
   2 20 f 10
  2   20
 22  _18
  4   40
 44  _36
  8   80
 88  _72
 16  160
176 _144
 32  320
352 _288

1

সি #, 50 বাইট

f=(a,b)=>{Console.WriteLine(a+" "+b);f(a+b,a-b);};

পরীক্ষার কেস সহ পুরো উত্স:

using System;
using System.Numerics;

namespace PlusMinusSequence
{
    class Program
    {
        static void Main(string[] args)
        {
            Action<BigInteger,BigInteger>f=null;
            f=(a,b)=>{Console.WriteLine(a+" "+b);f(a+b,a-b);};
            BigInteger x=10, y=2;
            f(x,y);
        }
    }
}

BigInteger ডেটা টাইপ ব্যবহার করা হয় যাতে সংখ্যাগুলি উপচে না পড়ে এবং 0 হয় না However তবে এটি যেহেতু এটি পুনরাবৃত্তির সমাধান, তাই স্ট্যাকের ওভারফ্লো আশা করে।

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