অর্ডার 40 লাঠি


15

আমাদের কাছে একই প্রস্থের 40 টি লাঠি রয়েছে তবে বিভিন্ন উচ্চতা রয়েছে। একে অপরের পাশে রাখার কতটা ব্যবস্থা রয়েছে যাতে ডান দিকের দিকে তাকালে আমরা 10 টি লাঠি দেখতে পাই এবং বাম দিকে তাকালে আমরা আবার 10 টি লাঠি দেখতে পারি?

উদাহরণস্বরূপ যেমন অর্ডার হ'ল:একটি উদাহরণ অর্ডার

কালো লাঠিগুলি লুকানো আছে, লাল লাঠিগুলি আপনি বাম দিক থেকে তাকানোর সময় দেখতে পাবেন, নীল লাঠিগুলি আপনি ডান এবং বেগুনি রঙের (যখন দীর্ঘতমটি) দেখেন তখন দেখা যায় যা দেখা যায় উভয় পক্ষ থেকে

পরীক্ষার মামলা হিসাবে:

  • বাম থেকে ২ টি এবং ডানদিক থেকে 2 দেখতে অর্ডারিংয়ের 3 টি স্টিকের সংখ্যা থাকলে 2
  • বাম থেকে 3 টি এবং ডান থেকে 3 দেখতে 6 টির অর্ডারিংয়ের যদি আমাদের 5 টি স্টিক থাকে
  • বাম থেকে 4 টি এবং ডানদিক থেকে 4 টি দেখার জন্য আমাদের যদি দশ স্টিক সংখ্যার অর্ডার থাকে তবে 90720 হয়

13
আপনি স্থির আউটপুট সহ প্রশ্নগুলি এড়াতে চাইতে পারেন কারণ সর্বোত্তম কোড-গল্ফ উত্তর সম্ভবত ফলাফলটি গণনা না করে মুদ্রণ করবে। আমি প্রশ্নটির কয়েকটি পরিবর্তনশীল ইনপুটগুলি তৈরির পরামর্শ দিচ্ছি, উদাহরণস্বরূপ এন স্টিকস যে আপনি তাদের কে বাম / ডান দিক থেকে দেখতে পান যেখানে এন এবং কে ইনপুট পূর্ণসংখ্যা
স্প 3000

4
আপনি যদি এই চিত্রটি পরিবর্তন করেন যাতে প্রোগ্রামগুলি ইনপুট নেয় (আমি তা দেখতে পাচ্ছি না কেন - আপনার কাছে ইতিমধ্যে পরীক্ষার কেস রয়েছে) তবে আপনি প্রোগ্রামগুলিতে সময়সীমা রাখতে চান কিনা তা নিয়ে আপনি ভাবতে চাইতে পারেন।
Sp3000

1
"40-10 কেস গণনা করার জন্য আপনার পোস্ট করা প্রোগ্রামটি অবশ্যই ব্যবহার করা উচিত" ভাল পর্যাপ্ত সময়সীমা হওয়া উচিত।
ফেয়ারসাম

1
আমি বুঝতে পারি না যে 10!/40 = 90720... এটি কাকতালীয় ঘটনা?
টিম

1
@ টিম 90720 এর তাত্পর্য কি? লস আলমিটোস, সিএ এর জন্য জিপ কোড ?
ডিজিটাল ট্রমা 12'15

উত্তর:


8

পারি / জিপি, ৮০

f(n,v)=abs(sum(k=1,n-1,binomial(n-1,k)*stirling(k,v-1,1)*stirling(n-k-1,v-1,1)))

পেনসিল / গ্রিড গেমের পরে দৃশ্যমান লাঠির সংখ্যাটিকে আকাশচুম্বী সংখ্যাও বলা হয় । এই কোডটি OEIS A218531 থেকে সূত্রের উপর ভিত্তি করে (কেবলমাত্র কিছুটা পরিবর্তন করা হয়েছে) । আমি খুব বেশি পারি জানি না, তবে আমি মনে করি না এখানে গল্ফের অনেক কিছুই আছে।

পরীক্ষার কেসগুলি সমস্ত আদর্শ আইটেম.কম এ প্রদর্শিত হয় । এর জন্য ফলাফল f(40,10):

192999500979320621703647808413866514749680

1
সূত্রটির একটি দুর্দান্ত কারণ আছে। vবাম-দৃশ্যমান লাঠিগুলির সাথে ক্রম সংখ্যাটি স্ট্র্লিং নম্বর s(n,v)। যদি দীর্ঘতম কাঠিটি অবস্থানে থাকে k, তবে বাম-দৃশ্যমান লাঠিগুলি হ'ল সেই কাঠি এবং k-1পজিশনের বামে বাম দিকের উপ-অনুক্রমের মধ্যে বাম-দৃশ্যমান লাঠিগুলি k। সুতরাং, vবাম-দৃশ্যমান লাঠি এবং vডান-দৃশ্যমান লাঠিগুলির জন্য, একটির s(k,v-1)বাম অর্ধেককে s(n-k-1,v-1)অনুমতি দেওয়া, ডান অর্ধেককে অনুমতি binomial(n-1,k)দেওয়া এবং দুটি অংশকে লাঠিগুলি বিভক্ত করার পছন্দ রয়েছে।
xnor

@ এক্সনর তারা লিঙ্কযুক্ত পিডিএফটিতে মূলত সেই ব্যাখ্যা দেয় তবে আপনার আইএমওটি আরও ভাল বলে থাকে।
জিওবিটস

আপনি 11 বাইট সংরক্ষণ করতে পারেন: f(n,v,s=stirling)=abs(sum(k=1,n--,binomial(n,k)*s(k,v-1)*s(n-k,v-1)))। এটি sterlingপুনঃব্যবহারের জন্য একটি পরিবর্তনশীলকে সংরক্ষণ করে, তার শেষ যুক্তিটি ছেড়ে দেয়, যেহেতু 1 ডিফল্ট এবং তিনটি বারের পরিবর্তে একবার 1 থেকে 1 কে বিয়োগ করে।
চার্লস

1

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

এই খুব খুশি না।

import itertools as i
x=input().split()
y,k=x
y=int(y)
c=0
x=list(i.permutations(list(range(1,y+1))))
for s in x:
 t=d=0;l=s[::-1]
 for i in range(y):
  if max(s[:i+1])==s[i]:t+=1
 for i in range(y):
  if max(l[:i+1])==l[i]:d+=1
 if t==d==int(k):c+=1
print(c)

ইনপুট এবং আউটপুট উদাহরণ:

10 4
90720

এটি প্রদত্ত পরিসরের সমস্ত সম্ভাব্য সংমিশ্রণ উত্পন্ন করে এবং তারপরে লুপ করে, প্রতিটি নম্বর এটি পূর্ববর্তী সংখ্যার সর্বাধিকের সমান কিনা তা পরীক্ষা করে দেখে। এরপরে এটি একই পিছনের দিকে করে, এবং যদি গণনা এগিয়ে (টি) = গণনা পিছনের দিকে (ডি) = প্রদত্ত দর্শন নম্বর (কে) এটি একটি বৈধ। এটি এটি একটি কাউন্টারে যুক্ত করে (সি) এবং প্রিন্ট করে যে শেষে।


0

আর, 104

function(N,K)sum(sapply(combinat::permn(N),function(x)(z=function(i)sum(cummax(i)==i)==K)(x)&z(rev(x))))

কিছুটা ডি গল্ফড:

    function(N,K) {
      all_perm <- combinat::permn(N)
      can_see_K_from_left <- function(i)sum(cummax(i) == i) == K
      can_see_K_from_both <- function(x)can_see_K_from_left(x) &
                                        can_see_K_from_left(rev(x))
      return(sum(sapply(all_perm, can_see_K_from_both)))
    }

0

পাইথ - 38 36 বাইট

মূলত আর উত্তরের একটি বন্দর। খুব ধীর, এমনকি 10, 4অনলাইনে সম্পূর্ণ করতে পারে না ।

AGHQLlfqhS<bhT@bTUGlf!-,yTy_TH.pr1hG

পাইথের কাছে কেবলমাত্র জিনিসগুলি হ'ল কামোম্যাক্স এবং ==ওভার ভেক্টর, তবে সেগুলি প্রয়োগ করতে কেবল কয়েকটি বাইট নিয়েছিল।

ব্যাখ্যা এবং আরও গল্ফিং শীঘ্রই আসছে।

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

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