স্টার্ন-ব্রোকট ক্রম অনুসারে নবম যুক্তিযুক্ত সংখ্যাটি আউটপুট করুন


30

স্টার্ন-Brocot ক্রম একটি Fibonnaci মত ক্রম যা নির্মাণ করা যেতে পারে অনুসরণ করে হল:

  1. এর সাথে ক্রমটি সূচনা করুন s(1) = s(2) = 1
  2. কাউন্টার সেট করুন n = 1
  3. পরিশেষে s(n) + s(n+1)ক্রম
  4. পরিশেষে s(n+1)ক্রম
  5. বৃদ্ধি n, ৩ য় ধাপে ফিরে আসুন

এটি সমান:

s (n) = \ start {কেসস} 1 & \ টেক্সটর্ম {যদি} n = 1 \ s (\ frac n 2) এবং \ n টেক্সটর্ম {এমনকি} \ s (rac frac {n-1 } 2) + গুলি (\ frac {n + 1} 2) & \ টেক্সটর্ম {অন্যথায়} \ শেষ {কেস}

অন্যান্য বৈশিষ্ট্যগুলির মধ্যে স্টার্ন-ব্রোকট ক্রমটি প্রতিটি সম্ভাব্য ধনাত্মক যুক্তিযুক্ত সংখ্যা তৈরি করতে ব্যবহার করা যেতে পারে। প্রতিটি যুক্তিযুক্ত সংখ্যা ঠিক একবার উত্পন্ন করা হবে, এবং এটি সর্বদা তার সহজ পদে প্রদর্শিত হবে; উদাহরণস্বরূপ, 1/3ক্রমানুসারে 4 র্থ মূলদ সংখ্যা, কিন্তু সমতুল্য সংখ্যার 2/6, 3/9ইত্যাদি সব সময়ে উপস্থিত হবেন না।

উপরে বর্ণিত হিসাবে আমরা নবম যুক্তিযুক্ত সংখ্যাটি নির্ধারণ করতে পারি r(n) = s(n) / s(n+1), যেখানে s(n)নবম স্টার্ন-ব্রোকট সংখ্যা রয়েছে।

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

  • উপরে বর্ণিত অ্যালগরিদমগুলি 1-সূচকযুক্ত; যদি আপনার এন্ট্রি 0-সূচিত হয় তবে দয়া করে আপনার জবাব দিন
  • বর্ণিত অ্যালগরিদমগুলি কেবলমাত্র উদাহরণস্বরূপ উদ্দেশ্যে, আউটপুট আপনার পছন্দ মতো কোনও উপায়ে নেওয়া যেতে পারে (হার্ড-কোডিং ব্যতীত)
  • ইনপুটটি এসটিডিন, ফাংশন প্যারামিটার বা অন্য কোনও যুক্তিসঙ্গত ইনপুট প্রক্রিয়ার মাধ্যমে হতে পারে
  • ওপুটুট স্টডআউট, কনসোল, ফাংশন রিটার্ন মান বা অন্য কোনও যুক্তিসঙ্গত আউটপুট স্ট্রিমে যেতে পারে
  • আউটপুট অবশ্যই ফর্মের স্ট্রিং হিসাবে থাকতে হবে এবং স্টার্ন-ব্রোকট ক্রমের প্রাসঙ্গিক এন্ট্রিগুলি এবং a/bকোথায় । আউটপুট দেওয়ার আগে ভগ্নাংশের মূল্যায়ন অনুমোদিত নয়। উদাহরণস্বরূপ, ইনপুট জন্য , আউটপুট হওয়া উচিত , না ।ab122/50.4
  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়

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

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

এখানে পরীক্ষার কেসগুলি 1-সূচকযুক্ত।

n    r(n)
--  ------
1    1/1
2    1/2
3    2/1
4    1/3
5    3/2
6    2/3
7    3/1
8    1/4
9    4/3
10   3/5
11   5/2
12   2/5
13   5/3
14   3/4
15   4/1
16   1/5
17   5/4
18   4/7
19   7/3
20   3/8
50   7/12
100  7/19
1000 11/39

OEIS এন্ট্রি: A002487
সিকোয়েন্সটি নিয়ে আলোচনা করছে দুর্দান্ত নম্বর ফাইল ফাইল : অসীম ভগ্নাংশ


আউটপুট Trueএস এর পরিবর্তে এস ব্যবহার করতে পারে 1?
লুভজো

1
@ লভজো না, কোনও True/2বৈধ ভগ্নাংশ নয় (যতদূর আমি উদ্বিগ্ন)। সরাইয়া হিসাবে, Trueসর্বদা হয় না 1- কিছু ভাষা -1বিটওয়াইড অপারেটর প্রয়োগ করার সময় সম্ভাব্য ভুলগুলি এড়াতে পরিবর্তে ব্যবহার করে। [তথ্যসূত্র প্রয়োজন]
সোক



1
@ সোক তবে পাইথনে, Trueএর সমতুল্য 1এবং True/2হবে 1/2
ফাঁস নুন

উত্তর:


3

জেলি , 14 বাইট

3ẋḶŒpḄċ
’Ç”/⁸Ç

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

ওহ, দেখে মনে হচ্ছে আমি @ ডেনিসের গৃহীত উত্তরগুলি এবং একই ভাষায় একইভাবে हरा করতে পারি। এটি ওইআইএসের সূত্র ব্যবহার করে কাজ করে: হাইপারবারিনিতে (যেমন সংখ্যা হিসাবে 0, 1, 2 সহ বাইনারি) প্রকাশের বিভিন্ন উপায় (সংখ্যা বিয়োগ 1) এর সংখ্যা। বেশিরভাগ জেলি প্রোগ্রামগুলি (যা পুরো প্রোগ্রাম বা কোনও ফাংশন হিসাবে কাজ করে) এর বিপরীতে, এটি কেবলমাত্র একটি সম্পূর্ণ প্রোগ্রাম হিসাবে কাজ করে (কারণ এটি আউটপুটটির অংশটি স্টাডাউটে প্রেরণ করে, এবং বাকিগুলি ফেরত দেয়; যখন পুরো প্রোগ্রাম হিসাবে ব্যবহৃত হয় ফেরতের মান) স্পষ্টভাবে stdout প্রেরণ করা হয়, সুতরাং সমস্ত আউটপুট একই জায়গায় হয়, কিন্তু এটি একটি ফাংশন জমা দেওয়ার জন্য কাজ করবে না)।

প্রোগ্রামটির এই সংস্করণটি খুব অদক্ষ। আপনি প্রথম সারির ঠিক পরে এন স্থাপনের মাধ্যমে একটি আরও দ্রুত প্রোগ্রাম তৈরি করতে পারেন যা 2 input অবধি সমস্ত ইনপুটটির জন্য কাজ করে; প্রোগ্রামটির ও ( এন × 3ⁿ) পারফরম্যান্স রয়েছে, সুতরাং এন ছোট রাখা এখানে মোটামুটি গুরুত্বপূর্ণ। লিখিত সেট হিসাবে প্রোগ্রামটি ইনপুটটির সমান n , যা স্পষ্টভাবে যথেষ্ট বড়, তবে প্রায় সব ক্ষেত্রেই স্পষ্টতই অনেক বড় (তবে ওহে, এটি বাইট সংরক্ষণ করে)।

ব্যাখ্যা

আমার জেলি ব্যাখ্যায় যথারীতি ব্রেসেসের পাঠ্য (উদাহরণস্বরূপ {the input}) এমন কিছু দেখায় যা আসল প্রোগ্রামে অনুপস্থিত অপারেশনের কারণে স্বয়ংক্রিয়ভাবে জেলি দ্বারা পূর্ণ হয়ে যায়।

সহায়ক ফাংশন ( n তম হর, অর্থাৎ এন + 1 ম সংখ্যা গণনা করে ):

3ẋḶŒpḄċ
3ẋ       3, repeated a number of times equal to {the argument}
  Ḷ      Map 3 to [0, 1, 2]
   Œp    Take the cartesian product of that list
     Ḅ   Convert binary (or in this case hyperbinary) to a number
      ċ  Count number of occurrences of {the argument} in the resulting list

প্রথম পাঁচটি বাইট মূলত কেবলমাত্র প্রদত্ত দৈর্ঘ্য পর্যন্ত সমস্ত সম্ভাব্য হাইপারবারিনির সংখ্যা উত্পন্ন করছে, যেমন ইনপুট 3 সহ, এর আউটপুট [[0,1,2], [0,1,2], [0,1,2] ]] সুতরাং কার্টেসিয়ান পণ্য হ'ল [[0,0,0], [0,0,1], [0,0,2], [0,1,0], ..., [2,2,1], [2,2,2]]। মূলত কেবল সর্বশেষ এন্ট্রিটিকে 1 দ্বারা গুণ করে, পেনাল্টিমেট এন্ট্রি 2 দ্বারা 2, পর্বতমালিক এন্ট্রি 4 দ্বারা এবং তারপর যোগ করে; যদিও এটি সাধারণত বাইনারিকে দশমিক রূপান্তর করতে ব্যবহৃত হয়, এটি 2 সংখ্যাটি ঠিক সূক্ষ্মভাবে পরিচালনা করতে পারে, এবং এইভাবে হাইপার্বাইনারিতেও কাজ করে। তারপরে ক্রমটিতে যথাযথ এন্ট্রি পাওয়ার জন্য আমরা ফলাফলের তালিকায় ইনপুট প্রদর্শিত হওয়ার সংখ্যাটি গণনা করি। (ভাগ্যক্রমে, সংখ্যার এবং ডিনোমিনেটর একই ক্রম অনুসরণ করে)।

প্রধান প্রোগ্রাম (সংখ্যার এবং ডিনোমিনেটরের জন্য জিজ্ঞাসা করে এবং আউটপুট ফর্ম্যাট করে):

’Ç”/⁸Ç
’Ç      Helper function (Ç), run on {the input} minus 1 (‘)
  ”/    {Output that to stdout}; start again with the constant '/'
    ⁸Ç  {Output that to stdout}; then run the helper function (Ç) on the input (⁸)

আমি কোনওভাবেই এমন প্রোগ্রামগুলি লিখতে থাকি যা আসল সমস্যাটি সমাধান করতে তারা যতটা বাইট নেয় I / O পরিচালনা করতে যতটা লাগে ...


দুঃখের বিষয়, আপনি এটি অদক্ষ হওয়ার বিষয়ে কৌতুক করছেন না - টিআইও 12-তে সম্পূর্ণ 20 বছর সময় নেয় এবং 13 বার সম্পূর্ণ বের হয়ে যায়! স্বীকৃত, যদিও আমি সমস্ত পরীক্ষার কেস যাচাই করতে পারি না।
Sok

11

সিজেএম (20 বাইট)

1_{_@_2$%2*-+}ri*'/\

অনলাইন ডেমো । নোট করুন যে এটি 0-সূচকযুক্ত। এটিকে 1-সূচকযুক্ত করতে, প্রাথমিক 1_দ্বারা প্রতিস্থাপন করুন T1

ব্যবচ্ছেদ

এটি মোশে নিউম্যানের কারণে বৈশিষ্ট্যটি ব্যবহার করে

ভগ্নাংশটি a(n+1)/a(n+2)পূর্ববর্তী ভগ্নাংশ a(n)/a(n+1) = xদ্বারা উত্পাদিত হতে পারে1/(2*floor(x) + 1 - x)

তাহলে যদি x = s/tআমরা পাই

  1 / (2 * floor(s/t) + 1 - s/t)
= t / (2 * t * floor(s/t) + t - s)
= t / (2 * (s - s%t) + t - s)
= t / (s + t - 2 * (s % t))

এখন, আমরা যদি ধরে নিই sএবং tএর পরে কপিরাইম হয়

  gcd(t, s + t - 2 * (s % t))
= gcd(t, s - 2 * (s % t))
= gcd(t, -(s % t))
= 1

সুতরাং a(n+2) = a(n) + a(n+1) - 2 * (a(n) % a(n+1))নিখুঁতভাবে কাজ করে।

1_           e# s=1, t=1
{            e# Loop...
  _@_2$%2*-+ e#   s, t = t, s + t - 2 * (s % t)
}
ri*          e# ...n times
'/\          e# Separate s and t with a /

এখানে পদ্ধতিটি পছন্দ, দুর্দান্ত উত্তর!
সুক

আপনি যদি OEIS এন্ট্রিটি আরও নীচে স্ক্রোল করেন তবে আপনি দেখতে পাবেন মাইক স্টে ইতিমধ্যে সেই সূত্রটি জমা দিয়েছে।
নীল

11

হাস্কেল, 78 77 65 58 বাইট

নির্লজ্জভাবে অপ্টিমাইজড পদ্ধতির চুরি আমাদের দেয়:

(s#t)0=show s++'/':show t
(s#t)n=t#(s+t-2*mod s t)$n-1
1#1

ইনফিক্স ফাংশনটি ব্যবহার করে কয়েকটি বাইট গল্ফ করার জন্য @ নিমিকে ধন্যবাদ!

(তবুও) 0-ভিত্তিক সূচক ব্যবহার করে।


পুরানো পদ্ধতির:

s=(!!)(1:1:f 0)
f n=s n+s(n+1):s(n+1):(f$n+1)
r n=show(s n)++'/':(show.s$n+1)

ধীরে ধীরে আউটপুট ফর্ম্যাট ... এবং সূচক অপারেটরগুলি। সম্পাদনা: এবং অগ্রাধিকার।

মজাদার ঘটনা: যদি ভিন্ন ভিন্ন তালিকাগুলি কোনও জিনিস হয় তবে শেষ পংক্তিটি হতে পারে:

r n=show>>=[s!!n,'/',s!!(n+1)]

বাঁধতে কোনও প্রহরী ব্যবহার s!!nকরা এক বাইট কম হওয়া উচিত:f n|x<-s!!n=x:x+x+1:f$n+1
লাইকনি

@ লাইকোনি s!!n+1নয় (s!!n)+1তবে s!!(n+1)সে কারণেই আমি এটি করতে পারি না: /
থ্রিএফএক্স

প্রকৃতপক্ষে, এটি সুস্পষ্ট হওয়া উচিত ছিল। এটা ঠিক ... s!!nসেখানে অনেক !
লাইকনি

1
আপনি ব্যবহার করতে পারেন ++'/':(show.s$n+1)মধ্যে rএকটি বাইট সংরক্ষণ করুন।
নিমি

1
একটি একটি পোতা ফাংশন স্যুইচ করুন: (s#t)0=show..., (s#t)n=t#(s+t-2*mod s t)$n-1, r=1#1। আপনি বাদও দিতে পারেন r, শেষ লাইনটি ঠিক 1#1
নিমি

6

জেলি , 16 বাইট

L‘Hị⁸Sṭ
1Ç¡ṫ-j”/

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

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

1Ç¡ṫ-j”/  Main link. Argument: n

1         Set the return value to 1.
 Ç¡       Apply the helper link n times.
   ṫ-     Tail -1; extract the last two items.
     j”/  Join, separating by a slash.


L‘Hị⁸Sṭ   Helper link. Argument: A (array)

L         Get the length of A.
 ‘        Add 1 to compute the next index.
  H       Halve.
   ị⁸     Retrieve the item(s) of A at those indices.
          If the index in non-integer, ị floors and ceils the index, then retrieves
          the items at both indices.
    S     Compute the sum of the retrieved item(s).
     ṭ    Tack; append the result to A.

5

05 এ বি 1 ই , 34 33 25 23 বাইট

XX‚¹GÂ2£DO¸s¦ìì¨}R2£'/ý

ব্যাখ্যা

XX‚                        # push [1,1]
   ¹G           }          # input-1 times do
     Â                     # bifurcate
      2£                   # take first 2 elements of reversed list
        DO¸                # duplicate and sum 1st copy, s(n)+s(n+1)
           s¦              # cut away the first element of 2nd copy, s(n)
             ìì            # prepend both to list
               ¨           # remove last item in list
                 R2£       # reverse and take the first 2 elements
                    '/ý    # format output
                           # implicitly print

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

আদনানকে ধন্যবাদ 2 বাইট সংরক্ষণ করা।


এটি কি কাজ করে ?: XX‚¹GÂ2£DO¸s¦ìì¨}R2£'/ý
আদনান

@ আদনান আসলেই। আমি ভুলে গিয়েছিলাম যে ýএকটি তালিকা ফর্ম্যাট করতে পারেন। খুশী হলাম।
এমিগানা

4

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

FT+"@:qtPXnosV47]xhh

এটি OEIS পৃষ্ঠায় প্রদত্ত দ্বিপদী সহগগুলির ক্ষেত্রে বৈশিষ্ট্য ব্যবহার করে ।

অ্যালগোরিদম সমস্ত সংখ্যার জন্য তত্ত্বে কাজ করে, তবে বাস্তবে এটি এমএটিএল এর সংখ্যাগত নির্ভুলতার দ্বারা সীমাবদ্ধ এবং তাই এটি বড় এন্ট্রিগুলির জন্য কাজ করে না। ফলাফল 20অন্ততপক্ষে ইনপুটগুলির জন্য নির্ভুল ।

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

ব্যাখ্যা

FT+      % Implicitly take input n. Add [0 1] element-wise. Gives [n n+1]
"        % For each k in [n n+1]
  @:q    %   Push range [0 1 ... k-1]
  tP     %   Duplicate and flip: push [k-1 ... 1 0]
  Xn     %   Binomial coefficient, element-wise. Gives an array
  os     %   Number of odd entries in that array
  V      %   Convert from number to string
  47     %   Push 47, which is ASCII for '\'
]        % End for each
x        % Remove second 47
hh       % Concatenate horizontally twice. Automatically transforms 47 into '\'
         % Implicitly display

4

পাইথন 2, 85 81 বাইট

x,s=input(),[1,1]
for i in range(x):s+=s[i]+s[i+1],s[i+1]
print`s[x-1]`+"/"+`s[x]`

এই জমাটি 1-সূচকযুক্ত।

একটি পুনরাবৃত্ত ফাংশন ব্যবহার করে, 85 বাইট:

s=lambda x:int(x<1)or x%2 and s(x/2)or s(-~x/2)+s(~-x/2)
lambda x:`s(x)`+"/"+`s(x+1)`

যদি কোনও আউটপুট True/2যেমন গ্রহণযোগ্য হয় তবে এখানে 81 বাইটে একটি রয়েছে:

s=lambda x:x<1 or x%2 and s(x/2)or s(-~x/2)+s(~-x/2)
lambda x:`s(x)`+"/"+`s(x+1)`

3

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

f=(i,n=0,d=1)=>i?f(i-1,d,n+d-n%d*2):n+'/'+d

1-ইন্ডেক্স; n=10-সূচকের জন্য পরিবর্তন করুন । লিঙ্কযুক্ত ওইআইএস পৃষ্ঠাটির পূর্ববর্তী দুটি শর্তাদির সাথে প্রতিটি পদটির জন্য একটি দরকারী পুনরাবৃত্তির সম্পর্ক রয়েছে; আমি কেবল পূর্ববর্তী ভগ্নাংশের ক্ষেত্রে এটি প্রতিটি ভগ্নাংশের পুনরাবৃত্তি হিসাবে পুনরায় ব্যাখ্যা করেছি। দুর্ভাগ্যক্রমে আমাদের ইনলাইন টেক্স নেই তাই এই ফর্ম্যাটগুলি কীভাবে তা জানতে আপনাকে কেবল এটি অন্য কোনও সাইটে পেস্ট করতে হবে:

একটিএকটি+ +-2(একটিগেলিক ভাষার)

3

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

f=lambda n:1/n or f(n/2)+n%2*f(-~n/2)
lambda n:`f(n)`+'/'+`f(n+1)`

পুনরাবৃত্তির সূত্র ব্যবহার করে।


3

সি (জিসিসি), by৯ বাইট

0-ভিত্তিক সূচক ব্যবহার করে।

s(n){return!n?:n%2?s(n/2):s(-~n/2)+s(~-n/2);}r(n){printf("%d/%d",s(n),s(n+1));}

Ideone


1
x?:yএটি একটি গিসি এক্সটেনশন।
ধনী

3

আসলে, 18 বাইট

11,`│;a%τ@-+`nk'/j

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

এই সমাধানটি পিটারের সূত্র ব্যবহার করে এবং একইভাবে 0-সূচিযুক্ত। বাইটের জন্য লিকি নুনকে ধন্যবাদ

ব্যাখ্যা:

11,`│;a%τ@-+`nk'/j
11                  push 1, 1
  ,`│;a%τ@-+`n      do the following n times (where n is the input):
                      stack: [t s]
    │                 duplicate the entire stack ([t s t s])
     ;                dupe t ([t t s t s])
      a               invert the stack ([s t s t t])
       %              s % t ([s%t s t t])
        τ             multiply by 2 ([2*(s%t) s t t])
         @-           subtract from s ([s-2*(s%t) s t])
           +          add to t ([t+s-2*(s%t) t])
                      in effect, this is s,t = t,s+t-2*(s%t)
              k'/j  push as a list, join with "/"


@ ল্যাকইনুন ওপি থেকে স্পষ্টতা না পাওয়া পর্যন্ত আমি এই উন্নতি বন্ধ রাখব।
মেগো

2

এমএটিএল , 32 30 বাইট

1i:"tt@TF-)sw@)v]tGq)V47bG)Vhh

এটি সরাসরি পদ্ধতির ব্যবহার করে: সিকোয়েন্সের পর্যাপ্ত সদস্য জেনারেট করে, দুটি পছন্দসই চয়ন করে এবং আউটপুট ফর্ম্যাট করে।

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


2

আর, 93 বাইট

f=function(n)ifelse(n<3,1,ifelse(n%%2,f(n/2-1/2)+f(n/2+1/2),f(n/2)))
g=function(n)f(n)/f(n+1)

আক্ষরিক অর্থেই সহজ বাস্তবায়ন। এটি কিছুটা গল্ফ করে কাজ করা।


2

এম 4, 131 বাইট

define(s,`ifelse($1,1,1,eval($1%2),0,`s(eval($1/2))',`eval(s(eval(($1-1)/2))+s(eval(($1+1)/2)))')')define(r,`s($1)/s(eval($1+1))')

এমন ম্যাক্রো সংজ্ঞা দেয় rযা r(n)অনুমান অনুসারে মূল্যায়ন করে। সত্যিই মোটেও গল্ফ হয়নি, আমি কেবল সূত্রটি কোড করে দিয়েছি।


2

রুবি, 49 বাইট

এটি 0-সূচিযুক্ত এবং পিটার টেলরের সূত্র ব্যবহার করে। গল্ফিং পরামর্শ স্বাগত জানাই।

->n{s=t=1;n.times{s,t=t,s+t-2*(s%t)};"#{s}/#{t}"}

1

> <> , 34 + 2 = 36 বাইট

পিটার টেলরের দুর্দান্ত উত্তর দেখার পরে, আমি আমার পরীক্ষার উত্তরটি আবার লিখেছিলাম (যা একটি বিব্রতকর 82 বাইট ছিল, খুব আনাড়ি পুনরাবৃত্তি ব্যবহার করে)।

&01\$n"/"on;
&?!\:@}:{:@+@%2*-&1-:

এটি স্ট্যাকের সাথে ইনপুট উপস্থিত হওয়ার প্রত্যাশা করে, তাই -vপতাকাটির জন্য +2 বাইট । এটি অনলাইন চেষ্টা করুন!


1

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

function f(i)S=[1 1];for(j=1:i/2)S=[S S(j)+S(j+1) (j+1)];end;printf("%d/%d",S(i),S(i+1));end

1

সি #, 91 90 বাইট

n=>{Func<int,int>s=_=>_;s=m=>1==m?m:s(m/2)+(0==m%2?0:s(m/2+1));return$"{s(n)}/{s(n+1)}";};

কাস্ট Func<int, string>। এটি পুনরাবৃত্তিমূলক বাস্তবায়ন।

Ungolfed:

n => 
{
    Func<int,int> s = _ => _; // s needs to be set to use recursively. _=>_ is the same byte count as null and looks cooler.
    s = m =>
        1 == m ? m               // s(1) = 1
        : s(m/2) + (0 == m%2 ? 0 // s(m) = s(m/2) for even
        : s(m/2+1));             // s(m) = s(m/2) + s(m/2+1) for odd
    return $"{s(n)}/{s(n+1)}";
};

সম্পাদনা করুন: -1 বাইট। সি # র পরিবর্তে আন্তঃবিবাহিত স্ট্রিংগুলির মধ্যে returnএবং এর $জন্য কোনও স্থানের প্রয়োজন নেই ।



1

জে, 29 বাইট

([,'/',])&":&([:+/2|]!&i.-)>:

ব্যবহার

N এর বড় মানগুলির একটি প্রত্যয় প্রয়োজন xযা বর্ধিত পূর্ণসংখ্যার ব্যবহারকে বোঝায়।

   f =: ([,'/',])&":&([:+/2|]!&i.-)>:
   f 1
1/1
   f 10
3/5
   f 50
7/12
   f 100x
7/19
   f 1000x
11/39

100একটি "বড় মান" হিসাবে গণনা?
dcsohl

1
@dcsohl এই পদ্ধতিতে, দ্বিপদী সহগগুলি গণনা করা হয় এবং এন = 100 এর জন্য বৃহত্তম গণনা হয় সি (72, 28) = 75553695443676829680> 2 ^ 64 এবং ভাসমান পয়েন্টের মানগুলি এড়াতে বর্ধিত পূর্ণসংখ্যার প্রয়োজন হবে।
মাইল

1

গণিত, 108 106 101 বাইট

(s={1,1};n=1;a=AppendTo;t=ToString;Do[a[s,s[[n]]+s[[++n]]];a[s,s[[n]]],#];t@s[[n-1]]<>"/"<>t@s[[n]])&

1

আর , 84 বাইট

function(n,K=c(1,1)){for(i in 1:n)K=c(K,K[i]+K[i+1],K[i+1])
paste0(K[i],"/",K[i+1])}

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

পুরোনো আর বাস্তবায়ন চশমা অনুসরণ না করে, একটি স্ট্রিং চেয়ে বরং একটি ফ্লোটিং পয়েন্ট ফিরে, তাই এটি হলো এক যে এটাই করে।

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