কাতালান সংখ্যা


36

দ্য কাতালান সংখ্যার (OEIS) স্বাভাবিক সংখ্যার প্রায়ই সংযুক্তকারিতা প্রদর্শনে একটি ক্রম হয়।

নবম কাতালান সংখ্যাটি ডাইক শব্দের সংখ্যা (বন্ধনী বা বন্ধনীর সুষম স্ট্রিং যেমন [[][]]; দুটি অক্ষর a এবং b ব্যবহার করে একটি স্ট্রিং হিসাবে আনুষ্ঠানিকভাবে সংজ্ঞায়িত হয় যে প্রথম থেকে শুরু হওয়া কোনও স্ট্রিংয়ের সাথে সংখ্যার চেয়ে বড় বা সমান একটি অক্ষরের সংখ্যা থাকে) বি অক্ষরের, এবং পুরো স্ট্রিংয়ে একই পরিমাণে a এবং b অক্ষর রয়েছে) 2n দৈর্ঘ্য সহ। নবম কাতালান নম্বর (এন> = 0 এর জন্য) এর জন্যও স্পষ্টভাবে সংজ্ঞায়িত করা হয়েছে:

এন = 0 থেকে শুরু করে, প্রথম 20 কাতালান সংখ্যা হ'ল:

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...

চ্যালেঞ্জ

একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখুন যা STDIN বা একটি গ্রহণযোগ্য বিকল্পের মাধ্যমে একটি অ-নেতিবাচক পূর্ণসংখ্যা নেবে এবং নবম কাতালান সংখ্যাটি আউটপুট করবে। আপনার প্রোগ্রামটি ইনপুট 0-19- এর জন্য সর্বনিম্ন কাজ করতে হবে।

ইনপুট / আউটপুট

ইনপুট

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

  • যদি (এবং কেবলমাত্র) আপনার ভাষা এসটিডিইএন বা কোনও গ্রহণযোগ্য বিকল্পের কাছ থেকে ইনপুট নিতে না পারে তবে প্রোগ্রামটিতে একটি হার্ডকোডযুক্ত পরিবর্তনশীল বা উপযুক্ত সমতুল্য থেকে ইনপুট নিতে পারে।

আউটপুট

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

আউটপুটটিতে অ্যাপোরিয়েট ক্যাটালান নম্বর থাকা উচিত, বিকল্পভাবে এক বা একাধিক নিউলাইনগুলি অনুসরণ করে। আপনার ভাষার ইন্টারপ্রেটারের ধ্রুবক আউটপুট যা দমন করা যায় না ব্যতীত অন্য কোনও আউটপুট তৈরি করা যায় না (যেমন একটি অভিবাদন, এএনএসআই রঙ কোড বা ইন্ডেন্টেশন)।


এটি সবচেয়ে সংক্ষিপ্ততম ভাষাটি আবিষ্কার করার বিষয়ে নয়। এটি প্রতিটি ভাষায় সংক্ষিপ্ততম প্রোগ্রামটি সন্ধান করা। অতএব, আমি একটি উত্তর গ্রহণ করব না।

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

তালিকা

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে ক্যাটালগ তৈরি করে a) ভাষার প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

সেখানে যদি আপনি আপনার শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের যোগফল বা আপনি আলাদাভাবে দোভাষী পতাকা শুল্ক তালিকাভুক্ত করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


আমরা কি কোনও পূর্ণসংখ্যার চেয়ে ফ্ল্যাট মুদ্রণ / ফিরিয়ে দিতে পারি?
অ্যালেক্স এ।

@AlexA। এটি গ্রহণযোগ্য।
একটি স্প্যাগেটে

সেখানে কি কোনও ট্যাগ থাকবে ?
vi।

1
@Vi। কিছুক্ষণ আগে এই নিয়ে একটি মেটা আলোচনা হয়েছিল এবং আমরা সম্মত হয়েছি যে oeis অপ্রয়োজনীয়
একটি স্প্যাগেটো

@Vi। এখানে মেটা পোস্টটি রয়েছে: meta.codegolf.stackexchange.com/a/5546/8478 । কিছু যুক্তি হিসাবে, আপনি ক্রম এবং সংখ্যা বা সংখ্যা-তত্ত্বের একটির সাথে বেশ নির্ভরযোগ্যভাবে ওইআইএস-স্টাইলের চ্যালেঞ্জগুলি খুঁজে পেতে পারেন । কিনা দেওয়া ক্রম আসলে হয় OEIS মধ্যে, সম্পূর্ণ চ্যালেঞ্জ অপ্রাসঙ্গিক।
মার্টিন এন্ডার

উত্তর:


26

সি, 78 52 39 34 33 বাইট

আরও বেশি সি যাদু (ধন্যবাদ xsot):

c(n){return!n?:(4+6./~n)*c(n-1);}

?: একটি জিএনইউ এক্সটেনশন


এবার নীচের পুনরাবৃত্তিটি প্রসারিত করে (ধন্যবাদ xnor এবং থমাস কোয়া):

অন্য একটি পুনরাবৃত্তি

c(n){return n?(4+6./~n)*c(n-1):1;}

-(n+1)প্রতিস্থাপন করা হয় ~n, যা দুটি পরিপূরকের সমতুল্য এবং 4 বাইট সংরক্ষণ করে।


আবার একটি ফাংশন হিসাবে, কিন্তু এবার নিম্নলিখিত পুনরাবৃত্তিটি কাজে লাগিয়েছেন:

আবৃত্তি করা

c(n){return n?2.*(2*n++-1)/n*c(n-2):1;}

c(n)নেতিবাচক জন্য একটি অসীম পুনরাবৃত্তি প্রবেশ করে n, যদিও এই চ্যালেঞ্জের জন্য এটি প্রাসঙ্গিক নয়।


যেহেতু কোনও ফাংশন কল করা আই / ও কনসোলের একটি গ্রহণযোগ্য বিকল্প বলে মনে হচ্ছে:

c(n){double c=1,k=2;while(k<=n)c*=1+n/k++;return c;}

c(n)একটি সময় লাগে intএবং একটি ফেরৎ int


আসল প্রবেশ:

main(n){scanf("%d",&n);double c=1,k=2;while(k<=n)c*=1+n/k++;printf("%.0f",c);}

সরাসরি সংজ্ঞা গণনা করার পরিবর্তে সূত্রটি আবার লিখিত হয়:

পুনর্লিখন

সূত্র অনুমান n >= 2, কিন্তু কোড জন্য অ্যাকাউন্ট n = 0এবং n = 1খুব।

উপরের সি মেসে, nএবং kসূত্রের মতো একই ভূমিকা রাখুন, যখন cপণ্যটি জমে থাকে। সমস্ত গণনাগুলি ভাসমান বিন্দু ব্যবহার করে সঞ্চালিত হয় double, যা প্রায়শই একটি খারাপ ধারণা, তবে এই ক্ষেত্রে ফলাফল কমপক্ষে n = 19 পর্যন্ত সঠিক হয়, তাই এটি ঠিক।

float 1 বাইট সংরক্ষণ করা হত, দুর্ভাগ্যক্রমে এটি যথেষ্ট সুনির্দিষ্ট নয়।


আমি এখন এটি পরীক্ষা করতে পারি না তবে আমি মনে করি আপনি এটি আরও ছোট করতে পারেন:c(n){return!n?:(4+6./~n)*c(n-1);}
xsot

ধন্যবাদ @ এসসট, আমি জানতাম না ?:! স্পষ্টতই, এটি একটি GNU সি এক্সটেনশান তবে আমি মনে করি এটি এখনও যোগ্যতা অর্জন করে।
স্টেফানো সানফিলিপো

23

জেলি , 4 বাইট

Ḥc÷‘

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

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

Ḥc÷‘    Left argument: z

Ḥ       Compute 2z.
 c      Hook; apply combinations to 2z and z.
  ÷‘    Divide the result by z+1.

1
কি "হুক কথাটার মানে কীভাবে? cপেতে 2zএবং zতার আর্গুমেন্ট হিসাবে?
xnor

@ এক্সনর এ হুক মানে ফ (এক্স, জি (এক্স)) এর মতো মূল্যায়ন করা ফাংশন। যখন অন্য ডায়াডিক ফাংশন অনুসরণ করে একটি ডায়াডিক ফাংশন থাকে, তখন পার্সার প্রথমটিকে হুক হিসাবে মূল্যায়ন করে।
lirtosiast

5
@ ডেনিস আসলেই কি 4 বাইট? এই নন-এএসসিআইআই অক্ষরগুলির সাথে, মোটেরেফ.ইন / বাইট- কাউন্টারটি 9 বাইট বলে
লুইস মেন্ডো

@LuisMendo এটি সম্ভবত একটি ভিন্ন এনকোডিং এর
undergroundmonorail

3
@ লুইসমেডো জেলি তার নিজস্ব, কাস্টম এনকোডিং ডিফল্ট ব্যবহার করে, যেখানে প্রতিটি অক্ষর একক বাইট। ইউটিএফ -8 সহ, উত্স কোডটি সত্যই 9 বাইট দীর্ঘ।
ডেনিস

11

সিজেম, 12 বাইট

ri_2,*e!,\)/

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

ইনপুট 11 এর বাইরে, আপনার জাভা ভিএম আরও মেমরি ব্যবহার করার জন্য আপনাকে বলতে হবে। এবং আমি আসলে ১১ এর বেশি ছাড়িয়ে যাওয়ার পরামর্শ দিচ্ছি না তত্ত্ব অনুসারে, এটি কোনও এন এর পক্ষে কাজ করে, যেহেতু সিজেম স্বেচ্ছাচারিতা-নির্ভুলতা পূর্ণসংখ্যা ব্যবহার করে।

ব্যাখ্যা

সিজেমে দ্বিপদী সহগের জন্য অন্তর্নির্মিত কিছু নেই, এবং তিনটি ফ্যাক্টরিওলগুলি থেকে সেগুলি গণনা করতে প্রচুর বাইট লাগবে ... সুতরাং এর থেকে আরও ভাল কিছু করতে হবে। :)

ri  e# Read input and convert it to integer N.
_   e# Duplicate.
2,  e# Push [0 1].
*   e# Repeat this N times, giving [0 1 0 1 ... 0 1] with N zeros and N ones.
e!  e# Compute the _distinct_ permutations of this array.
,   e# Get the number of permutations - the binomial. There happen to be 2n-over-n of
    e# of them. (Since 2n-over-n is the number of ways to choose n elements out of 2n, and
    e# and here we're choosing n positions in a 2n-element array to place the zeros in.)
\   e# Swap with N.
)/  e# Increment and divide the binomial coefficient by N+1.

এটা সত্যিই দুর্দান্ত। +1
একটি স্প্যাগেটো

এই চালাক। আমি ফ্যাকটোরিয়ালগুলি গণনা করে চেষ্টা করেছি। এটি কেবল স্বাভাবিক তিনটির মধ্যে দুটি লাগে কারণ তাদের মধ্যে দুটি একই। এটি এখনও ri_2*m!1$m!_*/\)/আমার প্রয়োগে 17 বাইট ( ) ব্যবহার করেছে । একমাত্র ভাল জিনিস এটি অনেক দ্রুত। :)
রেটো কোরাডি

11

গণিত, 16 13 বাইট

CatalanNumber

বিল্ট-ইনস, এমিরাইট ফেলা: /

অ-বিল্টিন সংস্করণ (21 বাইট):

Binomial[2#,#]/(#+1)&

একটি দ্বিপদী-কম সংস্করণ (25 বাইট):

Product[(#+k)/k,{k,2,#}]&

10

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

(2Ans) nCr Ans/(Ans+1

আশ্চর্যের বিষয় হল, এনসিআর এর গুণণের চেয়ে বেশি অগ্রাধিকার রয়েছে।


10

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

f=lambda n:0**n or(4+6/~n)*f(n-1)

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

f(0) = 1
f(n) = (4-6/(n+1)) * f(n-1)

0 এর বেস কেসটি হ্যান্ডেল করা হয় 0**n orযা 1কখন n==0এবং অন্যথায় ডানদিকে পুনরাবৃত্ত এক্সপ্রেশনকে মূল্যায়নের হিসাবে থামিয়ে দেয় । বিটওয়াস অপারেটর ~n==-n-1ডিনোমিনেটরকে ছোট করে এবং প্যারেন্সে সংরক্ষণ করে।

পাইথন 3 এর ফ্লোট বিভাগের জন্য ব্যবহৃত হয়। পাইথন 2 আরও একটি বাইট লেখার জন্য একই কাজ করতে পারে 6.


n<1তার চেয়ে কেন হয় না 0**n?
ফেভারসাম

@feersum এটা ফেরৎ Trueজন্য n==0বদলে 1। অবশ্যই, True == 1কিন্তু True is not 1এবং এটি আলাদাভাবে প্রিন্ট করে। আমি এটি অনুমতি দেওয়া হবে না আশা করি। আপনি কি জানেন যে আমাদের এ সম্পর্কে কোনও রায় আছে?
xnor

আমি বিশ্বাস করি যে এটি ঠিক আছে। isinstance(True, int) is Trueসর্বোপরি.
ফেয়ারসাম

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

7

জে, 8 বাইট

>:%~]!+:

এটি একটি monadic ট্রেন; এটি (2x এনসিআর এক্স) / (x + 1) সূত্র ব্যবহার করে। এখানে চেষ্টা করুন


7

pl, 4 বাইট

☼ç▲÷

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

ব্যাখ্যা

Pl এ, ফাংশনগুলি তাদের আর্গুমেন্টগুলি স্ট্যাকের বাইরে নিয়ে যায় এবং ফলটিকে স্ট্যাকের দিকে পিছনে ঠেলে দেয়। সাধারণত যখন স্ট্যাকের পর্যাপ্ত যুক্তি না থাকে তখন ফাংশনটি নিঃশব্দে ব্যর্থ হয়। যাইহোক, যখন স্ট্যাকের আর্গুমেন্টের পরিমাণটি কার্যকারিতা থেকে একেবারে দূরে থাকে তখন বিশেষ কিছু ঘটে - ইনপুট ভেরিয়েবলটি _যুক্তির তালিকায় যুক্ত করা হয়:

☼ç▲÷

☼      double: takes _ as the argument since there is nothing on the stack
 ç     combinations: since there is only one item on the stack (and arity is 2), it adds _ to the argument list (combinations(2_,_))
  ▲    increment last used var (_)
   ÷   divide: adds _ to the argument list again

কার্যত, এটি সিউডোকোড:

divide(combinations(double(_),_),_+1);

6

সেসোস , 94 86 68 বাইট

8 টি বাইটগুলি ফ্যাক্টরিয়াল-এরটি সংস্করণ 1 থেকে সংস্করণ 2-এ পরিবর্তন করে।

n!(n+1)!এক ধাপে কম্পিউটিং করে 18 বাইট । ডেনিসের আদিমতার পরীক্ষার অ্যালগরিদম থেকে বড় আকারে অনুপ্রাণিত ।

Hexdump:

0000000: 16f8de a59f17 a0ebba 7f4cd3 e05f3f cf0fd0 a0ebde  ..........L.._?......
0000015: b1c1bb 76fe18 8cc1bb 76fe1c e0fbda 390fda bde3d8  ...v.....v.....9.....
000002a: 000fbe af9d1b b47bc7 cfc11c b47bc7 cff1fa e07bda  .......{.....{.....{.
000003f: 39e83e cf07                                       9.>..

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

সূত্র ব্যবহার করে a(n) = (2n)! / (n!(n+1)!)

  • ফ্যাকটোরিয়াল-এর: সংস্করণ 1 (ইন-প্লেস, ধ্রুব স্মৃতি), সংস্করণ 2 (জায়গাতে, লিনিয়ার মেমরি)
  • গুণক: এখানে (স্থানে, ধ্রুব স্মৃতি)
  • বিভাজক: এখানে ( বিভাজক না হলে থামে না)

অ্যাসেম্বলার

set numin
set numout
get
jmp,sub 1,fwd 1,add 1,fwd 2,add 2,rwd 3,jnz
fwd 1,add 1
jmp
  jmp,sub 1,rwd 1,add 1,rwd 1,add 1,rwd 1,add 1,fwd 3,jnz
  rwd 1,sub 1,rwd 1,sub 1,rwd 1
  jmp,sub 1,fwd 3,add 1,rwd 3,jnz
  fwd 1
jnz
fwd 3
jmp
  jmp
    sub 1,rwd 1
    jmp,sub 1,rwd 1,add 1,rwd 1,add 1,fwd 2,jnz
    rwd 2
    jmp,sub 1,fwd 2,add 1,rwd 2,jnz
    fwd 3
  jnz
  rwd 1
  jmp,sub 1,jnz
  rwd 1
  jmp,sub 1,fwd 2,add 1,rwd 2,jnz
  fwd 3
jnz 
fwd 1
jmp
  jmp,sub 1,fwd 1,add 1,fwd 1,add 1,rwd 2,jnz
  fwd 1,sub 1,fwd 1
  jmp,sub 1,rwd 2,add 1,fwd 2,jnz
  rwd 1
jnz
rwd 2
jmp
  jmp
    sub 1,fwd 1
    jmp,sub 1,fwd 1,add 1,fwd 1,add 1,rwd 2,jnz
    fwd 2
    jmp,sub 1,rwd 2,add 1,fwd 2,jnz
    rwd 3
  jnz
  fwd 1
  jmp,sub 1,jnz
  fwd 1
  jmp,sub 1,rwd 2,add 1,fwd 2,jnz
  rwd 3
jnz 
fwd 1
jmp
  fwd 1,add 1,rwd 3
  jmp,sub 1,fwd 1,add 1,fwd 1,sub 1,rwd 2,jnz
  fwd 1
  jmp,sub 1,rwd 1,add 1,fwd 1,jnz
  fwd 1
jnz
fwd 1
put

ব্রেনফাক সমতুল্য

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

[->+>>++<<<]>+
[[-<+<+<+>>>]<-<-<[->>>+<<<]>]>>>
[[-<[-<+<+>>]<<[->>+<<]>>>]<[-]<[->>+<<]>>>]>
[[->+>+<<]>->[-<<+>>]<]<<
[[->[->+>+<<]>>[-<<+>>]<<<]>[-]>[-<<+>>]<<<]>
[>+<<<[->+>-<<]>[-<+>]>]>


5

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

,;;u)τ╣E\

হেক্স ডাম্প:

2c3b3b7529e7b9455c

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

ব্যাখ্যা:

,                   Read in evaluated input n
 ;;                 Duplicate it twice
   u)               Increment n and rotate it to bottom of stack
     τ╣             Double n, then push 2n-th row of Pascal's triangle
       E            Look-up nth element of the row, and so push 2nCn
        \           Divide it by the n+1 below it.

আপনি পাস্কালের ত্রিভুজের সারিগুলি প্রতিসাম্যযুক্ত এই সত্যটি কাজে লাগিয়ে একটি বাইট সংরক্ষণ করতে পারেন, তাই তৃতীয় 2nসারির মাঝারিটি C(2n,n)। সুতরাং: ,;u@τ╣║/8 বাইট জন্য।
মেগো

কি? 2nCn কি 2 ম সারির সর্বোচ্চ নয়?
কুইন্টোপিয়া

হ্যাঁ, এবং এটি মিডিয়ানও। সুতরাং, উভয় এবং Mকাজ করবে।
মেগো

@ মেগো আমি মিডিয়ায় আপনার প্রয়োগের বিষয়ে উদ্বিগ্ন, যদি তালিকাটি একই সংখ্যার মতো না হয় তবে কিছু যদি মাঝারি এবং সর্বোচ্চ উভয় হতে পারে। যদি আপনি "তালিকার মাঝখানে" বলতে চান তবে আপনি এর জন্য আলাদা নাম চয়ন করতে পারেন ...
কুইন্টোপিয়া

হ্যাঁ, এটি তালিকার মাঝামাঝি। বাছাই করা তালিকার জন্য, এটি আদর্শ পরিসংখ্যানীয় মাঝারি, তবে অসংরক্ষিত তালিকার জন্য এটি কেবল মাঝারি (বা 2 মাঝারি উপাদানগুলির গড়)
মেগো

4

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

পাইথন উত্তরের উপর ভিত্তি করে ।

c=x=>x?(4+6/~x)*c(x-1):1

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

c=x=>x?(4+6/~x)*c(x-1):1
c=x=>                     // Define a function c that takes a parameter x and returns:
     x?               :1  //  If x == 0, 1.
       (4+6/~x)           //  Otherwise, (4 + (6 / (-x - 1)))
               *c(x-1)    //  times the previous item in the sequence.

আমি মনে করি এটি এটি সবচেয়ে সংক্ষিপ্ত পেতে পারে তবে পরামর্শগুলি স্বাগত!


4

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

n->binomial(2n,n)/(n+1)

এটি একটি বেনাম ফাংশন যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি ফ্লোট ফেরত দেয়। এটি মৌলিক দ্বিপদী সূত্র ব্যবহার করে। এটি কল করার জন্য, এটির একটি নাম দিন f=n->...


4

মতলব, 35 25 বাইট

@(n)nchoosek(2*n,n)/(n+1)

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

@(n)nchoosek(2*n,n++)/n

2
আপনি @(n)ফাংশন পরিবর্তে ব্যবহার করতে পারেন , বেনামে ফাংশন ঠিক আছে।
FryAmTheEggman

আমি এখানে ওয়ার্কস্পেস ভেরিয়েবলগুলি অ্যাক্সেস করার আগে বেশ কয়েকটি উত্তর দেখেছি (বোঝানো হয়েছে যে তারা ইতিমধ্যে অন্য কোথাও ব্যবহারকারীর দ্বারা সেট করা ছিল)। ম্যাটল্যাব / অক্টাভেতে স্ক্রিপ্টগুলি সরল স্নিপেট হিসাবে উপস্থিত হতে পারে। আমি এখনই এটি একটি ফাংশনে পুনরায় তৈরি করেছি ...
কস্টরম

1
পোস্ট-ইনক্রিমেন্টিংয়ের মাধ্যমে আপনি আরও 2 টি বাইট ছুঁড়ে ফেলতে পারেন n:@(n)nchoosek(2*n,n++)/n
বেকার

টিপটির জন্য @ বেকার ধন্যবাদ! এটি শুধুমাত্র
অক্টোবায়

@ কোস্ট্রাম এটি আকর্ষণীয়। আমার মনে .../++nহয় কোন কাজ হয় না। : /
বেকার

4

𝔼𝕊𝕄𝕚𝕟, 3 টি চর / 6 বাইট

Мƅï

Try it here (Firefox only).

বিল্টিন এফটিডব্লিউ! আমি খুশী আমি গণিত.জেগুলি প্রথম দিকে বাস্তবায়ন করেছি implemented

বোনাস সমাধান, 12 অক্ষর / 19 বাইট

Мơ 2*ï,ï)/⧺ï

Try it here (Firefox only).

Ay,! 19 তম বাইট!

সিউডো-ইএস 6 এর মূল্যায়ন যেমন:

nchoosek(2*input,input)/(input+1)

3

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

g 0=1
g n=(4-6/(n+1))*g(n-1)

একটি পুনরাবৃত্তির সূত্র। পেরেনসকে বাঁচানোর উপায় আছে ...

সরাসরি পণ্যটি নেওয়া 2 বাইট বেশি ছিল:

g n=product[4-6/i|i<-[2..n+1]]

আপনার কোডটি স্টিডিন থেকে কোথায় পড়বে বা স্টডআউটে লিখবে?
ব্যবহারকারীর 2845840

2
@ ব্যবহারকারী 2845840 ফাংশন বৈশিষ্ট্যের সাথে সংযুক্ত একটি গ্রহণযোগ্য বিকল্প are
xnor

g(n-1)=> g$n-1একটি বাইট সংরক্ষণ করে। সম্পাদনা: আসলে এটি কাজ করে না কারণ সূত্রটি হিসাবে ব্যাখ্যা করা হয় (...*g) (n-1)
মনিকা

3

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

+∘1÷⍨⊢!+⍨

এটি একটি monadic ট্রেন; এটি (2x এনসিআর এক্স) / (x + 1) সূত্র ব্যবহার করে। এটি এখানে অনলাইনে চেষ্টা করুন


3

সি, 122 121 119 108 বাইট

main(j,v)char**v;{long long p=1,i,n=atoi(v[1]);for(j=0,i=n+1;i<2*n;p=(p*++i)/++j);p=n?p/n:p;printf("%d",p);}

আমি উইন্ডোজ সাইগউইন পরিবেশে সংকলনের জন্য জিসিসি (জিসিসি) ৩.৪.৪ (সিগমিং স্পেশাল, জিডিসি 0.12, ডিএমডি 0.125 ব্যবহার করে) ব্যবহার করেছি। কমান্ড লাইনে ইনপুট আসে। এটি শার্লক 9 এর পাইথন সমাধানের অনুরূপ তবে লুপগুলি একত্রে মিশ্রিত হয়ে ওভারফ্লো এড়াতে এবং 20 তম কাতালান সংখ্যা (এন = 19) পর্যন্ত আউটপুট পেতে পারে।


1
আপনি mainবাইট সংরক্ষণ করতে সংজ্ঞা দিয়ে কমা পরে স্থানটি সরিয়ে ফেলতে পারেন ।
অ্যালেক্স এ।

সুন্দর, আমি এখনই পোস্টটি সম্পাদনা করব
ক্লাব্ল্যাঙ্ক

আপনার সাথে 2 আরও বেশি বাইট সংরক্ষণ করতে পারবেন char**vবদলে char *v[]। (আগের জায়গার *প্রয়োজন হয় না, এবং প্রকারগুলি সমান))
ম্যাট

নিশ্চিতভাবেই, এটি দুর্দান্ত কাজ করে। ধন্যবাদ মাদুর
ক্লাবল্যাঙ্ক

এটি ছোট করার জন্য টিপস পৃষ্ঠা থেকে কিছু স্টাফ ব্যবহার করে uses নোট করুন যদিও আইডিয়নের জন্য আমি এর জন্য একটি মান হার্ডকোড করেছি n
FryAmTheEggman

3

জাভাগনি , 223 বাইট

public class C{public static int f(int a,int b){try{int z=1/(b-a);}catch(Exception e){return 1;}return a*f(a+1,b);}public static void main(String[]s){int m=Integer.parseInt(s[0])+1;System.out.println(f(m,2*m-1)/f(1,m)/m);}}

পুরোপুরি প্রসারিত:

public class C {
    public static int f(int a,int b){
        try {
            int z=1/(b-a);
        } catch (Exception e){
            return 1;
        }
        return a*f(a+1,b);
    }
    public static void main(String[] s){
        int m=Integer.parseInt(s[0])+1;
        System.out.println(f(m,2*m-1)/f(1,m)/m);
    }
}

এসল্যাংসের এন্ট্রি কোনও বিষয় নয় - যতক্ষণ আপনি প্রতিযোগিতার আগে তৈরি দোভাষী ব্যবহার করেন ততক্ষণ এটি সব ভাল এবং বৈধ।
অ্যাডিসন ক্র্যাম্প

যাইহোক আর জিততে পারে না
fla

এটা জাভা, তাই হ্যাঁ।
Rɪᴋᴇʀ

1
@ রিকার ভাল, এটি জাভা থেকেও খারাপ।
জাকব

2

জাপট, 16 বাইট

এমনকি গণিতও খাটো হয়। :-/

U*2ª1 o àU l /°U

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

অবহেলিত এবং ব্যাখ্যা

U*2ª 1 o àU l /° U
U*2||1 o àU l /++U

         // Implicit: U = input number
U*2||1   // Take U*2. If it is zero, take 1.
o àU     // Generate a range of this length, and calculate all combinations of length U.
l /++U   // Take the length of the result and divide by (U+1).
         // Implicit: output result

পুনরাবৃত্তির সূত্রের ভিত্তিতে বিকল্প সংস্করণ:

C=_?(4+6/~Z *C$(Z-1):1};$C(U

2

ভিটসি , 13 বাইট

VV2*FVF/V1+F/
V              Capture the input as a final global variable.
 V             Push it back.
  2*           Multiply it by 2
    F          Factorial.
     VF        Factorial of the input.
       /       Divide the second to top by the first.
        V1+    1+input
           F   Factorial.
            /  Divide.

এটি ভিট্টির একটি ফাংশন । এটি কীভাবে এটি করে এমন একটি প্রোগ্রাম তৈরি করবেন, আপনি জিজ্ঞাসা করছেন? সংঘবদ্ধ N। C:

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


2

মিল্কিওয়ে 1.5.14 , 14 বাইট

':2K;*Ny;1+/A!

ব্যাখ্যা

'               # read input from the command line
 :              # duplicate the TOS
  2      1      # push integer to the stack
   K            # push a Pythonic range(0, TOS) as a list
    ;   ;       # swap the TOS and the STOS
     *          # multiply the TOS and STOS
      N         # push a list of the permutations of the TOS (for lists)
       y        # push the length of the TOS
          +     # add the STOS to the TOS
           /    # divide the TOS by the STOS
            A   # push the integer representation of the TOS
             !  # output the TOS

বা, অথবা, অনেক আরো দক্ষ সংস্করণ:


মিল্কিওয়ে 1.5.14 , 22 বাইট

'1%{;K£1+k1-6;/4+*}A!

ব্যাখ্যা

'                      # read input from the command line
 1     1  1 6  4       # push integer to the stack
  %{  £           }    # for loop
    ;        ;         # swap the TOS and the STOS
     K                 # push a Pythonic range(0, TOS) as a list
        +       +      # add the TOS and STOS
         k             # push the negative absolute value of the TOS
           -           # subtract the STOS from the TOS
              /        # divide the TOS by the STOS
                 *     # multiply the TOS and the STOS
                   A   # push the integer representation of the TOS
                    !  # output the TOS

ব্যবহার

python3 milkyway.py <path-to-code> -i <input-integer>

2

ক্লোজার / ক্লোজার স্ক্রিপ্ট, 53 বাইট

(defn c[x](if(= 0 x)1(*(c(dec x))(- 4(/ 6(inc x))))))

গল্ফ গল্ফের জন্য ক্লোজার খুব হতাশ হতে পারে still এটি এখনও খুব পাঠ্য while যদিও খুব পঠনযোগ্য, তবে কিছু স্তম্ভিত বৈশিষ্ট্যগুলি সত্যই ভার্জোজ। (inc x)চেয়ে বেশি কথ্য হয় (+ x 1)এবং "আর" আরও সংক্ষিপ্ত, কিন্তু আসলে নয় এমন অক্ষর সংরক্ষণ করে। এবং অপারেশন চেইনগুলি লেখার মতো সুন্দর (->> x inc (/ 6) (- 4)), তবে এটি কেবল কুরুচিপূর্ণভাবে করার চেয়ে বেশি দীর্ঘ।


2

প্রোলোগ, 42 বাইট

পুনরাবৃত্তি ব্যবহার প্রায়শই প্রোলোগের সাথে যাওয়ার উপায়।

কোড:

0*1.
N*X:-M is N-1,M*Y,X is(4-6/(N+1))*Y.

উদাহরণ:

19*X.
X = 1767263190.0

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


আপনি কি *এখানে প্রতীকটির নতুন সংজ্ঞা দিচ্ছেন ?
পাওলো ইবারম্যান

@ PaŭloEbermann ঠিক নয় আমি * নামে একটি নতুন ডায়াডিক প্রিকিকেট নির্ধারণ করছি আমি এখনও নিয়মিত পাটিগণিত ব্যবহার করতে পারি। উপরের প্রোগ্রামে এম * ওয়াই আমার সংজ্ঞায়িত শিকারী যখন (4-6 / (এন + 1)) * ওয়াই নিয়মিত গুণ।
এমিগানা

এটি পি (এক্স, ওয়াই) হিসাবে লেখার চেয়ে কিছুটা খাটো: - যা কোড গল্ফের জন্য দুর্দান্ত।
এমিগানা


2

সিলোন, 60 বাইট

Integer c(Integer n)=>(1:n).fold(1)((p,i)=>p*(n+i)/i)/(n+1);

এটি সি 30 পর্যন্ত কাজ করে , যেহেতু সিলোন এর পূর্ণসংখ্যাগুলি 64-বিট সংখ্যায় (সি 31) স্বাক্ষরিত রয়েছে এর ওভারফ্লো হয়েছে, -4050872099593203 হিসাবে গণনা করা হবে)।

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

// Catalan number C_n
//
// Question:  http://codegolf.stackexchange.com/q/66127/2338
// My answer: http://codegolf.stackexchange.com/a/66425/2338

Integer c(Integer n) =>
        // sequence of length n, starting at 1.
        (1:n)
        // starting with 1, for each element i, multiply the result
        // of the previous step by (n+i) and then divide it by i.
    .fold(1)((p, i) => p * (n + i) / i)
        // divide the result by n+1.
        / (n + 1);

2

আর, 35 28 16 বাইট

numbers::catalan

সম্পাদনা: সংখ্যার প্যাকেজ অন্তর্নির্মিত ব্যবহার করুন।



2

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

Dxcr>/

ব্যাখ্যা:

Code:     Stack:               Explanation:

Dxcr>/

D         [n, n]               # Duplicate of the stack. Since it's empty, input is used.
 x        [n, n, 2n]           # Pops a, pushes a, a * 2
  c       [n, n nCr 2n]        # Pops a,b pushes a nCr b
   r      [n nCr 2n, n]        # Reverses the stack
    >     [n nCr 2n, n + 1]    # Increment on the last item
     /    [(n nCr 2n)/(n + 1)] # Divides the last two items
                               # Implicit, nothing has printed, so we print the last item

2

আর, 28 বাইট

কোনও প্যাকেজ ব্যবহার করা হচ্ছে না, আগের উত্তরের চেয়ে সামান্য দীর্ঘ

choose(2*(n=scan()),n)/(n+1)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.