টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো বল রাখার উপায়গুলি


9

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

উদাহরণস্বরূপ, বলুন যে আমাদের কাছে 3 টি সাদা বল রয়েছে। বিভিন্ন উপায় হ'ল:

(wwwbbb)
(wb)(wb)(wb)

দুটি ভিন্ন সম্ভাবনার জন্য।

যদি আমাদের 5 টি সাদা বল থাকে তবে বিভিন্ন উপায় হ'ল:

(wwwwwbbbbb)
(wwwbbb)(wb)(wb)
(wwwb)(wbbb)(wb)
(wb)(wb)(wb)(wb)(wb)

আপনি যে কোনও উপায়ে পছন্দ করতে ইনপুটটি নিতে পারেন, যা একটি একক পূর্ণসংখ্যা। আউটপুটটি কেবল একটি একক পূর্ণসংখ্যা।

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

আপনি যে কোনও ভাষা বা লাইব্রেরি পছন্দ করতে পারেন।


দয়া করে পরিষ্কার করুন, আমাদের আউটপুট কি বিভিন্ন উপায়ে কেবল সংখ্যা হতে পারে? অর্থাৎ আউটপুট হিসাবে একক সংখ্যা?
orlp

5
আমি ধরে নিলাম এটি গণিতের। stackexchange.com/Qestions/2736933/… আপনার উচিৎ @ লম্বিক
qwr

3
আমি মনে করি আপনার গতির মানদণ্ডটি নেওয়া উচিত বা এটিকে আরও নির্দিষ্ট করা উচিত। "দ্রুত যথেষ্ট" খুব অস্পষ্ট।
dylnan

1
আপনি জানেন যে পিপিসিজি ব্যবহারকারীরা এতটাই পাগল যে তারা সুপার কম্পিউটার ব্যবহার করে আরও ১ টি বাইট না দিয়ে ১১ টি গণনা করার জন্য অর্থ ব্যয় করবে? তাহলে কেন তাদের অর্থ নষ্ট হচ্ছে? :)
ব্যবহারকারী 202729

1
(মন্তব্য: জটিল সূত্রে দক্ষতার সাথে পি ফাংশন গণনা করা সম্ভব a একটি উপযুক্ত সূত্র সহ এই ফাংশনটিও গণনা করা সম্ভব))
ব্যবহারকারী 202729

উত্তর:


5

পরী / জিপি, 81 বাইট

p=polcoeff;f(n)=p(p(prod(i=1,n,prod(j=1,n,1+(valuation(i/j,2)==0)*x^i*y^j)),n),n)

আরো দক্ষতা জন্য, প্রতিস্থাপন 1+সঙ্গে 1+O(x^(n+1))+O(y^(n+1))+(প্রথম Oমেয়াদে একা ইতিমধ্যে অনেক সাহায্য করে)।

এটি অনলাইন চেষ্টা করুন! (পূর্বের ৮ 86 বাইট সংস্করণে এক জোড়া অপ্রয়োজনীয় পেরেন এবং p=সংক্ষিপ্তসার ছাড়াই )

পুরানো সংস্করণ, 90 বাইট

f(n)=polcoeff(polcoeff(taylor(1/prod(i=0,n,prod(j=0,n,1-x^(2*i+1)*y^(2*j+1))),x,n+1),n),n)

কম্পিউটিংয়ের f(11)জন্য একটি বৃহত স্ট্যাক আকার প্রয়োজন, ত্রুটি বার্তা আপনাকে কীভাবে এটি বাড়ানো যায় তা বলবে। এটা দুই প্রতিস্থাপন আরও দক্ষ (কিন্তু কম golfy) এর nযে দ্বিতীয় আর্গুমেন্ট হিসাবে প্রদর্শিত prodসঙ্গে (n-1)/2


আমার জন্য 13 পর্যন্ত কাজ করে!

আমি অনুমান করি যে এটি ব্যবহার করে সংস্করণটি রয়েছে (n-1)/2?
খ্রিস্টান সিভর্স

হ্যাঁ, ভাল কথা।

আগ্রহের বাইরে, আপনি কি ভাবেন যে চ (500) গণনা করা সম্ভব?

2
F (500) = 214621724504756565823588442604868476223315183681404 গণনা করতে কয়েক মিনিট সময় নেয়
খ্রিস্টান

7

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

C=lambda l,r,o=():((l,r)>=o)*l*r%2+sum(C(l-x,r-y,(x,y))for x in range(1,l,2)for y in range(1,r,2)if(x,y)>=o)

সর্বদা সেটগুলি ক্রমহীনভাবে সেটগুলি ক্রম তৈরি করে ডুপ্লিকেট পেতে না তা নিশ্চিত করে তা গণনা করে। ব্যবহার করে স্মৃতিচারণ করা যুক্তিসঙ্গতভাবে দ্রুত C = functoools.lru_cache(None)(C)তবে এটি এর জন্য প্রয়োজনীয় নয় n = 11

C(num_white, num_black)আপনার ফলাফল পেতে কল করুন । প্রথম দম্পতি n:

1: 1
3: 2
5: 4
7: 12
9: 32
11: 85
13: 217
15: 539
17: 1316
19: 3146
21: 7374

ফলাফল উত্পন্ন করতে:

def odd_parts(l, r, o=()):
    if l % 2 == r % 2 == 1 and (l, r) >= o:
        yield [(l, r)]

    for nl in range(1, l, 2):
        for nr in range(1, r, 2):
            if (nl, nr) < o: continue
            for t in odd_parts(l - nl, r - nr, (nl, nr)):
                yield [(nl, nr)] + t

উদাহরণস্বরূপ (7, 7):

[(7, 7)]
[(1, 1), (1, 1), (5, 5)]
[(1, 1), (1, 1), (1, 1), (1, 1), (3, 3)]
[(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)]
[(1, 1), (1, 1), (1, 1), (1, 3), (3, 1)]
[(1, 1), (1, 3), (5, 3)]
[(1, 1), (1, 5), (5, 1)]
[(1, 1), (3, 1), (3, 5)]
[(1, 1), (3, 3), (3, 3)]
[(1, 3), (1, 3), (5, 1)]
[(1, 3), (3, 1), (3, 3)]
[(1, 5), (3, 1), (3, 1)]

সত্যিই খুব সুন্দর.

2

পাইথন 3 , 180 172 বাইট

def f(n):
 r=range;N=n+1;a=[N*[0]for _ in r(N)];R=r(1,N,2);a[0][0]=1
 for i in R:
  for j in R:
   for k in r(N-i):
    for l in r(N-j):a[k+i][l+j]+=a[k][l]
 return a[n][n]

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

উত্পাদনের ফাংশনটির সরাসরি বাস্তবায়ন। দীর্ঘ কিন্তু (কিছুটা) দক্ষ ও (এন 4 ) সময়, ও (এন 2 ) মেমরি।

ফলস্বর অ্যারেতে aসমস্ত আকারের সমস্ত ফলাফল রয়েছে nতবে কেবলমাত্র a[n][n]ফিরে আসে।


আপনার কোড স্বার্থের বাইরেও এন এর জন্য গণনা করে? যেমন একটি [4] [4] এ।

এটি এখন পর্যন্ত দ্রুততম সমাধান!

2
@ ল্যাম্বিক এ [৪] [৪] = ৪ টি সাদা বল এবং ৪ টি কালো বলকে টুকরো টুকরো করে রাখার বিভিন্ন সংখ্যার, প্রতিটি বিনের এক বিচিত্র সংখ্যক সাদা বল এবং এক বিচিত্র সংখ্যক কালো বল রয়েছে। যথাযথভাবে সংজ্ঞা হিসাবে।
ব্যবহারকারী 202729

1

পাইথন 2 ,168 181 বাইট

from itertools import*
r,p=range,product
def f(n):
 a,R=eval(`[[0]*n]*n`),r(1,n,2);a[0][0]=1
 for i,j in p(R,R):
  for k,l in p(r(n-i),r(n-j)):a[k+i][l+j]+=a[k][l]
 return a[-1][-1]

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


এটি একটি স্নিপেট (অনুমান nকরে ইনপুট রয়েছে) আপনার উচিত যোগ করা উচিত def f(n):বা n=input()(এটি একটি ফাংশন / সম্পূর্ণ প্রোগ্রামের জন্য তৈরি করা উচিত ))
ব্যবহারকারী 202729 14

এবং ... এটি পাইথন 2, আপনি দুটি স্পেসের পরিবর্তে একটি ট্যাব ব্যবহার করতে পারেন। একটি বাইট সংরক্ষণ করে। aহতে পারে eval(`[[0]*n]*n`)(যেখানে `ঘোরা repr)।
ব্যবহারকারী 202729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.