মোটজকিন নাম্বার


30

নবম মোটজকিন নম্বর হ'ল (0, 0) থেকে (এন, 0) থেকে পাথের সংখ্যা যেখানে প্রতিটি পদক্ষেপ (1, -1), (1, 0) বা (1, 1) ফর্মের হয় y = 0 এর নিচে যায় না।

উপরের লিঙ্কটি থেকে এন = 1, 2, 3, 4 এর জন্য এই পাথগুলির উদাহরণ এখানে রয়েছে:

মোটজকিন নম্বর

কাঙ্ক্ষিত ক্রমটি হ'ল OEIS A001006 । ওইআইএস এর ক্রমটির আরও কয়েকটি বৈশিষ্ট্য রয়েছে।


ইনপুট হিসাবে আপনাকে ইতিবাচক পূর্ণসংখ্যা n দেওয়া হবে। আপনার নবম মোটজকিন নম্বর আউটপুট করা উচিত।

এখানে মোটজকিনের 1 থেকে 10 নম্বর রয়েছে:

1, 2, 4, 9, 21, 51, 127, 323, 835, 2188

সমস্ত স্ট্যান্ডার্ড ইনপুট এবং আউটপুট পদ্ধতি অনুমোদিত। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

এটি কোড গল্ফ। সবচেয়ে কম বাইট জেতা


মোটজকিন সংখ্যাগুলির ন্যূনতম সেটটি কী উত্পন্ন করতে হবে?
অ্যাডিসন ক্র্যাম্প


@ ফ্ল্যাগএএসস্প্যাম এগুলি সবই সময় / মেমরি / ডেটা টাইপের সীমাবদ্ধতার মধ্যে রয়েছে।
isaacg

আমি মনে করি ভাষাগুলিতে এখন অন্তর্নির্মিত একটি ডাইক শব্দ দরকার।
লিটারোসিয়াসট

উত্তর:


15

এমএটিএল , 13 14 বাইট

i-2/t.5+hH4Zh

উদাহরণ:

>> matl i-2/t.5+hH4Zh
> 6
51

সম্পাদনা (জুন 16, 2017): আপনি এটি অনলাইনে চেষ্টা করতে পারেন ! আরও লক্ষ করুন যে ভাষার আধুনিক সংস্করণগুলিতে (এই চ্যালেঞ্জের পরে-তারিখটি) iঅপসারণ করা যেতে পারে।

ব্যাখ্যা

খুব সোজা, হাইপারজেমেট্রিক ফাংশনের সাথে সমতা (সমীকরণ (10) দেখুন) ব্যবহার করে :

এখানে চিত্র বর্ণনা লিখুন

হাইপারজমেট্রিক ফাংশনের সংজ্ঞা থেকে

এখানে চিত্র বর্ণনা লিখুন

এটি স্পষ্ট যে প্রথম দুটি আর্গুমেন্টের ক্রমটি বদলে যেতে পারে, যা একটি বাইট সংরক্ষণ করে।

i         % input                                                   
-2/       % divide by -2
t.5+      % duplicate and add 0.5
h         % horizontal concatenation into a vector                               
H         % number 2
4         % number literal                                          
Zh        % hypergeometric function with three inputs (first input is a vector)

1
এই উত্তরটি সবচেয়ে কম সময়ের জন্য আবদ্ধ এবং প্রায় দেড় ঘন্টার মধ্যে পুরানো, তাই আমি এটি গ্রহণ করছি।
isaacg

ধন্যবাদ! এমএটিএল এমনকি পাইথের সাথে বাঁধা থাকবে তা আমি খুব কমই ভাবতে পারি। এটি মারার মতো কঠিন ভাষা, এটির নকশা করা ভাল কাজ!
লুইস মেন্ডো

11

রেটিনা , 59 58 বাইট

+`(\D*)1(1*)
:$1<$2:$1>$2:$1_$2:
:(_|()<|(?<-2>)>)+:(?!\2)

ইনপুট লাগে ইউনারী । ইনপুট 7 (অর্থাত্ 1111111) বেশ খানিকটা সময় নেয় তবে এখনও এক মিনিটেরও কম সময়ে সম্পূর্ণ হয় tes আমি এর চেয়ে বেশি কিছু যেতে পারব না।

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

ব্যাখ্যা

মোটজকিন সংখ্যার আলাদা বৈশিষ্ট্যটি হ'ল তিনটি ভিন্ন চরিত্রের স্ট্রিংয়ের সংখ্যা, যেখানে এর মধ্যে দুটি যথাযথভাবে ভারসাম্যযুক্ত (সুতরাং কাতালান সংখ্যার সাথে ঘনিষ্ঠ সম্পর্ক, যা তৃতীয় অক্ষর ব্যালেন্সিং থেকে পৃথক পৃথক নয়) এর সাথে একই are

.NET এর মিট গোষ্ঠী, সঠিকভাবে মিলেছে স্ট্রিং সনাক্ত এ প্রশংসনীয় ভাল হয় তাই আমরা কেবল উৎপন্ন সব দৈর্ঘ্যের স্ট্রিং N(ব্যবহার _, <এবং >তিনটি অক্ষর হিসেবে) এবং তারপর আমরা গণনা কিভাবে তাদের অনেককেই সঠিকভাবে সুষম হয়। N = 4বৈধ স্ট্রিংগুলির জন্য উদাহরণস্বরূপ :

____
__<>
_<_>
_<>_
<__>
<_>_
<>__
<<>>
<><>

প্রতিদ্বন্দ্বিতায় সংজ্ঞা সাথে তুলনা করা, _একটি সাথে সঙ্গতিপূর্ণ (1,0)পদক্ষেপ, <করতে (1,1)এবং >করতে (1,-1)

আসল কোড :হিসাবে, বিভিন্ন স্ট্রিং মধ্যে বিভাজক হিসাবে ব্যবহৃত হয়। দ্বিতীয় রেজেক্সটি ভারসাম্যযুক্ত স্ট্রিংয়ের জন্য স্ট্যান্ডার্ড .NET রেজেক্সের একটি গল্ফযুক্ত ফর্ম ।

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

  • যদি স্ট্রিংগুলি _ম্যাচগুলিতে শেষ হয় , এটি ব্যতীত উপসর্গটি _ইতিমধ্যে সঠিকভাবে ভারসাম্যযুক্ত, এবং <বা >ভারসাম্যটি ফেলে দেওয়া হবে।
  • স্ট্রিং বিভক্তি যদি >ম্যাচ, স্ট্রিং সুষম হয় সঙ্গে যে >, তাই _বা <যে ব্যালেন্স বন্ধ নিক্ষেপ করবে।
  • স্ট্রিংগুলি শেষ হওয়া <কখনই ভারসাম্যপূর্ণ হতে পারে না।

এটি লজ্জার বিষয় যে '\' এর বিশেষ অর্থ রয়েছে অন্যথায় '_ / \' অক্ষরগুলি ব্যবহার করা প্রশ্নের আত্মার সাথে আরও ভাল মানায়।
নীল

9

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

M=lambda n:n<1or sum(M(k)*M(n-2-k)for k in range(n))

ম্যাথওয়ার্ল্ড থেকে সূত্র ব্যবহার করে

এখানে চিত্র বর্ণনা লিখুন

নির্বাণ দ্বারা অক্ষর সংরক্ষণ M[n-1]যেমন সমষ্টি মধ্যে মেয়াদ k=n-1, যা দেয় M[-1]*M[n-1]সঙ্গে, M[-1]=1প্রাথমিক অবস্থা অংশ হিসেবে।

সম্পাদনা: একটি চর সংক্ষিপ্ত পরিমাণ পুনরাবৃত্তভাবে লিখতে:

M=lambda n,k=0:n<1or k<n and M(k)*M(n-2-k)+M(n,k+1)

অন্যান্য পন্থাগুলি যা দীর্ঘ হয়ে গেছে:

M=lambda n,i=0:n and(i>0)*M(n-1,i-1)+M(n-1,i)+M(n-1,i+1)or i==0
M=lambda n:+(n<2)or(3*~-n*M(n-2)+(n-~n)*M(n-1))/(n+2)

8

পাইথ, 15 বাইট

Ls*V+KyMb1+t_K1

এটি একটি ফাংশন সংজ্ঞায়িত করে y। অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

যাক y[n]হতে n-th Motzkin সংখ্যা। আমি y[n]সূত্র দিয়ে গণনা

y[n] = dot product of (y[0], ..., y[n-1], 1) and (y[n-2], ..., y[0], 1)

লক্ষ্য করুন যে প্রথম ভেক্টর দ্বিতীয়টির চেয়ে বড় (গণনা করার সময় ব্যতীত y[0])। যখন এটি হয়, পাইথটি প্রথম ভেক্টরের শেষে স্বয়ংক্রিয়ভাবে 1 টি উপেক্ষা করে, যাতে উভয় ভেক্টর সমান দৈর্ঘ্যের হয়।

Ls*V+KyMb1+t_K1
L                 define a function y(b), which returns:
      yMb            compute the list [y[0], y[1], ..., y[b-1]]
     K               assign it to K
  *V                 vectorized multiplication of
    +K   1             * K with a 1 at the end
          +t_K1        * reverse(K), remove the first element, and append 1
 s                   return the sum (dot product)

এই সূত্রটি ওইআইএস-এ তালিকাভুক্ত সূত্রগুলির একটি বৈচিত্র। এটি কিছুটা বোকা হতে পারে। প্রথম ভেক্টরের শেষে 1 টির কারণে (যেগুলি দৈর্ঘ্যকে অসম করে তোলে), আমাকে আসলে পুনরাবৃত্তিটি একটি বেস কেস দিতে হবে না। এবং আমার আশা ছিল, যে +...1দু'জনকে কোনওভাবে গল্ফ করা যেতে পারে। দেখা যাচ্ছে না আমি পারি না।

আপনি সমান দৈর্ঘ্যের ভেক্টরগুলির একটি ডট পণ্য সহ একই ধরণের পুনরাবৃত্তিটি সংজ্ঞায়িত করতে পারেন এবং y[0] = 1একই বাইট গণনা সহ বেস কেসটি সংজ্ঞায়িত করতে পারেন ।


8

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

.5X]{__W%.*:++}qi*W=

অনলাইন ডেমো

ঐ মেগো প্রশ্নে মন্তব্য যেমন লক্ষ করেছি, এই খুব ঘনিষ্ঠভাবে কাতালান সংখ্যার সঙ্গে সম্পর্কযুক্ত: পরিবর্তনের .5জন্য 1এবং এক দ্বারা সূচক অফসেট (বা শুধু অপসারণ .5সম্পূর্ণরূপে এবং সূচক অপরিবর্তিত ছেড়ে চলে যান) কাতালান সংখ্যার জন্য।

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

a (n + 2) - a (n + 1) = a (0) * a (n) + a (1) * a (n-1) + ... + a (n) * a (0)। [Bernhart]

OEIS পৃষ্ঠা থেকে কাতালান সংখ্যার সাথে সম্পর্কিত পুনরাবৃত্তি হিসাবে তালিকাভুক্ত করা হয়েছে

a (n) = Sum_ {k = 0..n-1} a (k) a (n-1-k)।


6

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

,;╗r`;τ╜█@;u@τ╣║\*`MΣ

কুইন্টোপিয়ার কাতালান নম্বর সমাধান থেকে কিছু কোড নিয়েছে , মন্তব্যগুলিতে আমি বিশেষত উন্নতি করেছি।

আমি নিম্নলিখিত সূত্র ব্যবহার:

মোটজকিন সূত্র

যেহেতু nCk0 এর জন্য k > n, আমি সমস্ত উপায়ে যোগফল দিই n-1, যেহেতু সেই মানগুলি 0 হবে এবং সুতরাং এটি যোগফলকে প্রভাবিত করে না।

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

ব্যাখ্যা:

,;╗r`;τ╜█@;u@τ╣║\*`MΣ
,;╗                    push input, dupe, store one copy in register 0
   r                   push range(0, n) ([0,n-1])
    `             `M   map the function:
     ;τ╜█@               dupe k, push C(n, 2*k), swap with k
          ;u@τ╣║\        push the kth Catalan number
                 *       multiply
                    Σ  sum

C(n, 2*k)এখন কি করে?
অ্যাডিসন ক্র্যাম্প

@ ফ্ল্যাগএএসস্পাম C(n,k) = nCk, বা kআইটেমগুলির একটি পুল থেকে আইটেমগুলির সংমিশ্রণের সংখ্যা n
মেগো

ওহ, আমি যা ভাবছিলাম তার থেকে এটি আরও বেশি অর্থবোধ করে। +1 টি।
এডিসন মধ্যে Crump

@ ফ্ল্যাগএএসপিএম আমি মনে করি না যে আপনি এটি কী ভেবেছিলেন আমি তা জানতে চাই ...
মেগো

5

আর, 64 বাইট

f=function(n)ifelse(n<2,1,f(n-1)+sum(rev(s<-sapply(2:n-2,f))*s))

@ Xnor এর অজগর উত্তরের ম্যাথওয়ার্ল্ড সূত্রটিও ব্যবহার করে । অগ্রাধিকার নিয়ম ধন্যবাদ, 2:n-2সমতুল্য 0:(n-2)

পরীক্ষার কেস:

> f(0)
[1] 1
> f(1)
[1] 1
> f(5)
[1] 21
> f(10)
[1] 2188
> sapply(0:20,f)
 [1]        1        1        2        4        9       21       51      127
 [9]      323      835     2188     5798    15511    41835   113634   310572
[17]   853467  2356779  6536382 18199284 50852019

5

গণিত, 31 30 বাইট

AppellF1[-#/2,.5,-#/2,2,4,4]&

মজা করার জন্য, এখানে একটি 37 বাইট সংস্করণ

Hypergeometric2F1[(1-#)/2,-#/2,2,4]&

এবং 52 বাইট সংস্করণ

SeriesCoefficient[1-x-Sqrt[1-2x-3x^2],{x,0,#+2}]/2&

4

জেলি , 17 14 13 বাইট

×US;
1;HÇƓ¡1ị

এটি @ পিটারটেলারের উত্তর থেকে পুনরাবৃত্তি সম্পর্ক ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

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

×US;      Define a helper link. Left argument: a (list)

×U        Multiply (×) a by its reverse (U).
  S       Compute the sum of the resulting list.
   ;      Prepend it to a.
          Return the result.

1;HÇƓ¡1ị  Define the main link.

1         Set the left argument to 1.
 ;H       Append the half of 1 to 1. Result: [1, 0.5].
    Ɠ     Read an integer n from STDIN.
   Ç ¡    Call the helper link (Ç) n times.
      1ị  Retrieve the result at index 1.

2

গণিত, 44 42 34 বাইট

Sum[#!/(i!(i+1)!(#-2i)!),{i,0,#}]&

একটি 35 বাইট সংস্করণ:

Coefficient[(1+x+1/x)^#,x]/#&[#+1]&

2

পরী / জিপি , 38 36 26 বাইট

n->(1+x+x^2)^n++/n\x^n++%x

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

ম্যাথওয়ার্ল্ড থেকে সমীকরণ (11) ব্যবহার করে :

এমএন=1এন+ +1(এন+ +11)2

(এন)2(এন)2এক্সএন+ +(1+ +এক্স+ +এক্স2)এন


14 বাইট Samau ত্রিপদরাশিবিশিষ্ট সহগ প্রথম সংজ্ঞা ব্যবহার ফাংশন: );;7 2D$ⁿ$)╡$÷। আমি এটি উত্তর হিসাবে পোস্ট করব না কারণ ভাষা প্রশ্নের চেয়ে নতুন।
আলেফাল্ফা

এটি পোস্ট করা ঠিক আছে, আপনাকে কেবল একটি দাবি অস্বীকার করতে হবে যে জমাটি জয়ের যোগ্য নয় কারণ আপনি যেমন বলেছিলেন, ভাষাটি প্রশ্নের চেয়ে নতুন।
অ্যালেক্স এ।

2

05 এ বি 1 ই , 13 12 বাইট

ÝI<ãʒ.øDŸQ}g

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

বেশিরভাগ উত্তরগুলিতে একটি সূত্র বা পুনরাবৃত্ত সম্পর্ক ব্যবহার করা হলেও এটি একটি সাধারণ গণনা পদ্ধতির।

গ্রিডের মাধ্যমে প্রতিটি সম্ভাব্য পথটি তার y স্থানাঙ্কগুলির তালিকা দ্বারা উপস্থাপিত হয়। এন বিভাগগুলির জন্য, মোট (এন + 1) পয়েন্ট রয়েছে তবে প্রথম এবং শেষটি অবশ্যই 0, যাতে নির্দিষ্ট করার জন্য পাতাগুলি (এন -1) থাকে।

Ý           # range [0..n]
 I<         # n - 1
   ã        # cartesian power

আমাদের কাছে এখন পাথের একটি তালিকা রয়েছে (এখনও প্রাথমিক এবং চূড়ান্ত 0 সহ নয়)। নির্মাণ করে, তাদের কোনওটিই 0 এর নিচে যায় না তবে যাইহোক, তাদের কারও কারও অবৈধ opালু রয়েছে (উদাহরণস্বরূপ 0 থেকে 2 পর্যন্ত লাফানো), সুতরাং আমাদের এগুলি ফিল্টার আউট করা দরকার।

ʒ      }g   # count how many paths satistfy the following condition
 0.ø        # surround with 0
      Q     # is equal to
    DŸ      # its own fluctuating range

Ÿহয় fluctuating পরিসীমা বিল্ট-ইন। যদি অ-সংলগ্ন সংখ্যার কোনও জোড়া থাকে তবে এটি অনুপস্থিত সংখ্যাগুলি পূরণ করবে (যেমন [0, 2] হয়ে যায় [0, 1, 2])। কেবল আইনী পথই অপরিবর্তিত থাকবে।

অবৈধ opালু চেক করার সম্ভবত আরও স্বজ্ঞাত উপায় üαàহ'ল (জোড়ের তুলনায় সর্বোচ্চ পার্থক্য 1 এর সমান)। যাইহোক, এটি ফ্ল্যাটটি [0, 0, ... 0] পথ মিস করে, যা ঠিক করতে এক অতিরিক্ত বাইট খরচ করে।

অবশেষে, নোট করুন যে আসল কোডটি যেখানে এই ব্যাখ্যাটি ব্যবহার করে সেখানে ব্যবহার করে 0.ø। 0 টি দিয়ে পথটিকে ঘিরে পরিবর্তে, এটি পথের দুটি অনুলিপি সহ অন্তর্নির্মিত ইনপুটটিকে ঘিরে। এটি স্থানাঙ্ক সিস্টেমটিকে উল্টে-ডাউন এবং অভ্যন্তরীণ-আউটকে ঘুরিয়ে দেয়, তবে অন্যথায় সমতুল্য।


2

স্ট্যাক্স , 12 বাইট

îu¬@Y≤ÅÉÑ(πε

এটি চালান এবং এটি ডিবাগ করুন

আমি কীভাবে অভিনব গণিতের টাইপসেটিং করব তা জানি না তবে এটি মূলত একটি গতিশীল প্রোগ্রামিং নির্মাণের উপর নির্ভর করে

M(0) = 1
M(1) = 1
M(n + 1) = M(n) + sum(M(k) * M(n - k - 1) for k in [0..n-1])



0

ES6, 44 বাইট

f=(n,k=0)=>n<1?1:k<n&&f(k)*f(n-2-k)+f(n,k+1)

@ Xnor এর পুনরাবৃত্ত পাইথন সমাধানের সোজা বন্দর। চাহিদা n<1?1:কারণ n<1||হবে f(0)প্রত্যাবর্তন true


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