নম্বর দ্বারা জাগলিং


20

আপনার কাজটি কোনও প্রদত্ত টেমপ্লেটটি সম্পূর্ণ করে একটি বৈধ জাগলিং প্যাটার্ন তৈরি করা। তবে প্রথমে আপনার সম্ভবত এটি জানতে হবে যে কীভাবে এই ধরণটি চিহ্নিত করা হয়।

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

সাইটপ্লেসের পরিচয়

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

আসুন কিছু উদাহরণ তাকান। এগুলির সমস্তগুলির অ্যানিমেশনগুলি এখানে দেখুন

3-বল ক্যাসকেড

সবচেয়ে সহজ 3-বল প্যাটার্ন। প্রতিটি বল প্রতিটি তৃতীয় বীটে নিক্ষেপ করা হয় (পর্যায়ক্রমে হাত) প্রহারগুলি এইরকম দেখায় বলে মনে হয় (ASCII লাইন দুটি বলকে সংযোগ দেয় যেখানে একই বল ছুঁড়ে দেওয়া হয়):

Beat     1 2 3 4 5 6 7 8 9
Hand     L R L R L R L R L
Siteswap 3 3 3 3 3 3 3 3 3
         └─┼─┼─┘ │ │
           └─┼───┘ │
             └─────┘

খেয়াল করুন যে প্রতিটি বল কীভাবে Lএকটি Rপিটে নিক্ষেপ করা হয়, তা কীভাবে একটি পিটে নিক্ষেপ করা হয় ites সাইটস্যাপের নিদর্শনগুলি স্পষ্টভাবে পুনরাবৃত্তি করে, তাই এই প্যাটার্নটি সাধারণত হিসাবে চিহ্নিত করা হয় 333, যদিও কেবল 3এটি পর্যাপ্তও হবে।

441

সাইটপ্যাপার ৪৪১ এর সাথে এখানে আরও জটিল উদাহরণ রয়েছে :

Beat     1 2 3 4 5 6 7 8 9
Hand     L R L R L R L R L
Siteswap 4 4 1 4 4 1 4 4 1
         │ │ └─┘ │ │
         └─┼─────┘ │
           └───────┘

সমান সংখ্যাযুক্ত নিক্ষেপগুলি কীভাবে সেগুলি থেকে নিক্ষেপ করা হয়েছিল একই দিকে যায়, অন্যদিকে বিজোড় সংখ্যাযুক্ত নিক্ষেপ অন্য হাতে চলে যায় Note

423

কখনও কখনও আপনি কেবল একটি ছুঁড়ে মারার পরিবর্তে একটি বল ধরে রাখতে চান। তার মানে এই যে, এই বলটি পরের বার তার হাতের পালা - অর্থাৎ পরে 2 টি মারবে thrown সুতরাং একটি বল ধরে রাখা ধাঁচের সাথে সমান 2:

Beat     1 2 3 4 5 6 7 8 9
Hand     L R L R L R L R L
Siteswap 4 2 3 4 2 3 4 2 3
         │ └─┼─┘ │ │
         │   └───┼─┘
         └───────┘

50505

এর 0অর্থ হ'ল বর্তমান হাতটি সেই বীটে খালি রয়েছে, যেমন এই প্যাটার্নটি দেখায়:

Beat     1 2 3 4 5 6 7 8 9
Hand     L R L R L R L R L
Siteswap 5 0 5 0 5 5 0 5 0
         └───┼───┼─┘   │
             └───┼─────┘
                 └───────>

মাল্টিপ্লেক্স জাগলিং

যদিও ভ্যানিলা সাইটস্যাপের সাথে এই সমস্যাটি কিছুটা সহজ হবে। মাল্টিপ্লেক্স নিদর্শন লিখুন! মাল্টিপ্লেক্স জাগলিং মানে আপনি একই সাথে এক হাত থেকে একাধিক বল নিক্ষেপ করেন। উদাহরণস্বরূপ, উপরের 3-বলের ক্যাসকেডে, আপনি যদি প্রতি তৃতীয় বিটটিতে দু'জন অতিরিক্ত বল নিক্ষেপ করেন তবে প্যাটার্নটি হয়ে উঠবে [33]33এবং এর মতো দেখতে:

Beat     1    2 3 4    5 6 7    8 9
Hand     L    R L R    L R L    R L
Siteswap [33] 3 3 [33] 3 3 [33] 3 3
          └┴──┼─┼──┴┘  │ │
              └─┼──────┘ │
                └────────┘

এখানে আরও একটি উদাহরণ রয়েছে, যেখানে মাল্টিপ্লেক্স থ্রোতে দুটি পৃথক উচ্চতা / দৈর্ঘ্য রয়েছে। এটি উভয় হিসাবে [34]11বা হিসাবে চিহ্নিত করা যেতে পারে [43]11:

Beat     1    2 3 4    5 6 7    8 9
Hand     L    R L R    L R L    R L
Siteswap [43] 1 1 [43] 1 1 [43] 1 1
          ││  └─┴──┘│  │
          │└────────┘  │
          └────────────┘

(নোট যে 1বীট নিক্ষিপ্ত 2বীট এ জমি 3এবং অবিলম্বে (আবার ফেলা হয় অন্য হিসাবে 1বীট জমি পর্যন্ত) 4এবং দ্বিতীয় মাল্টিপ্লেক্স থ্রো অংশ হতে।)

এই পোস্টের শুরুতে অ্যানিমেশনের জন্য সাইটসপ ছিল [53]15121

প্যাটার্নের বৈধতা

কোনও প্যাটার্নটি অর্থহীনভাবে বৈধ হওয়ার জন্য কোনও হাতে বলের সংখ্যা সর্বদা সেই বীটে নির্দেশিত নিক্ষেপের সংখ্যার সাথে মিলিত হতে হবে। এর অর্থ, একটি এট দিয়ে কোনও বল অবতরণ করতে হবে না 0, অন্য কোনও একক অঙ্কের সাথে একটি বীটে কেবল একটি বল অবতরণ করতে হবে, এবং মাল্টিপ্লেক্স বীটে এন বলগুলি অবতরণ করতে হবে , যেখানে এন সংখ্যাগুলির সংখ্যা যে মাল্টিপ্লেক্স নিক্ষেপ। প্যাটার্নটি অবশ্যই নির্বিঘ্নে পুনরাবৃত্তি করতে সক্ষম হবে।

অবৈধ নিদর্শনগুলির উদাহরণগুলি 543(সমস্ত বল একই বিটটিতে অবতরণ করবে), 240( 2থুথু দিয়ে দখল হবে 0) বা 33[24](মাল্টিপ্লেক্স বেটে কোনও বলের জমি নেই, তবে দুটি বল দু'জনেরই দুটি বল অবতরণ করেছে)।

চ্যালেঞ্জ

আপনি এমন একটি সাইটপ্যাপার প্যাটার্ন নেবেন যার মধ্যে ওয়াইল্ডকার্ড রয়েছে এবং সেই ওয়াইল্ডকার্ডগুলি পূরণ করে একটি বৈধ প্যাটার্ন আউটপুট দেবে।

যেমন ধরুন ইনপুট (stdin, কম্যান্ড-লাইন আর্গুমেন্ট, ফাইল বা ফাংশন প্যারামিটার এর মাধ্যমে) বিন্যাসের একটি স্ট্রিং

n s

nকোনও পূর্ণসংখ্যার যেখানে ব্যবহার করা sবলগুলির সংখ্যা নির্দেশ করে এবং এটি সাইটসপ্যাটিং প্যাটার্ন ( হোয়াইটস্পেস ছাড়াই )। আপনি ধরে নিতে পারেন যে এটি সিন্টেক্সিকভাবে সঠিক - সমস্ত বর্গাকার বন্ধনীগুলি ম্যাচ করা হয়েছে এবং নেস্টেড নয় এবং কোনও অপ্রত্যাশিত অক্ষর নেই। সমস্ত নিক্ষেপ একক-অঙ্কিত ছোঁড়া ( 0- 9) হবে। যাইহোক , কিছু বিটকে কেবল একটি হিসাবে চিহ্নিত করা _যেতে পারে, যা আউটপুটটিতে একক বা একাধিক পাত্রে পূরণ করতে হবে।

দ্রষ্টব্য: এর মতো কিছু হ'ল ইনপুটটির অংশ [_3]হবে না । হয় পুরো বীট অনুপস্থিত বা পুরো বিট দেওয়া হয়।

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

দ্রষ্টব্য: আউটপুটে অকারণে স্কয়ার ব্র্যাকেট বা একাধিক থ্রোতে জিরো থাকতে হবে না। সুতরাং আউটপুট ধারণকারী [3]বা [03]গ্রহণযোগ্য নয়, 3পরিবর্তে আপনাকে আউটপুট দিতে হবে to একটি মাল্টিপ্লেক্স থ্রোতে অঙ্কের ক্রম প্রাসঙ্গিক নয়।

দ্রষ্টব্য: আপনি চক্রীয় অনুমানের অধীনে নকলগুলি এমন নিদর্শনগুলি বাদ দিতে পারেন । উদাহরণস্বরূপ ইনপুট 3 __(দুটি ওয়াইল্ডকার্ড নোট করুন), উভয় 42এবং 24বৈধ উত্তর (অন্যদের মধ্যে), তবে তারা আসলে একই প্যাটার্নটি বর্ণনা করে। আপনি হয় উভয় আউটপুট করতে পারেন বা কেবল তাদের মধ্যে একটি, তবে আপনাকে এটি ধারাবাহিকভাবে করতে হবে।

এটি কোড গল্ফ , সংক্ষিপ্ততম কোড জয় (প্রশ্নের নীচে বোনাসের তালিকাভুক্ত)।

আপনি জাগলিংল্যাবটি নিখুঁতভাবে বৈধ কিনা এবং তারা দেখতে কেমন তা দেখতে চারপাশে খেলতে ব্যবহার করতে পারেন ।

উদাহরণ

Input           Possible Outputs     Comments

3 _             3
                [21]
                [111]

3 4_3           423

4 4_2           4[51]2
                4[42]2
                4[321]2

3 _23_          6231
                4233
                323[31]
                2235
                223[41]
                0237
                023[43]
                [42]231
                [32]23[11]
4 5_3           !                    5 and 3 will both land at the third beat, but
                                     there is only a single throw at that beat. This
                                     cannot be fixed with any throw in the blank.

2 5_4           !                    Any possible throw in the wildcard (including a
                                     0) will make a pattern for at least 3 balls.

3 54_           !                    The only solution that would correspond to a
                                     3-ball pattern is 540, which is not semantically
                                     valid because the 5 and 4 both land at beat 3.
                                     There are valid solutions, but they require at
                                     least 4 balls.

বোনাসেস

  • যদি আপনার উত্তর 35 টির মধ্যে "অঙ্কগুলি" পরিচালনা করতে পারে তবে অক্ষর দ্বারা চিহ্নিত (10 = এ, 11 = বি, ...), 20 টি অক্ষর বিয়োগ করুন । আপনি সিদ্ধান্ত নিতে পারেন যে এই চিঠিগুলি আপার-কেস, লোয়ার-কেস বা কেস-সংবেদনশীল হওয়া উচিত। (জাগলিংল্যাব যদি কিছু পাগল নিদর্শন দেখতে চান তবে লোয়ার-কেসগুলিতে এগুলি পরিচালনা করতে পারেন))
  • যদি আপনার উত্তরটি সমস্ত বৈধ সমাধান আউটপুট করে তবে 20 টি অক্ষর বিয়োগ করুন ।

উত্তর:


6

পাইথন, 587 - 20 = 567 অক্ষর

from itertools import *
E,J,L,R,X=enumerate,''.join,len,range,list
def f(x):
 [u,p]=str.split(x);n=int(u);a=[[[x],x][type(x)==X]for x in eval("["+J(c if c=="["else"-1,"if c=="_"else c+","for c in p)+"]")];l,w=L(a),[i for i,x in E(a)if x==[-1]]
 for j in product([[0]]+X(chain(*[combinations_with_replacement(R(1,10),i+1)for i in R(n+1)])),repeat=L(w)):
  for k,m in zip(w,j):a[k]=m
  b=[0]*l
  for k,x in E(a):
   for y in x:b[(k+y)%l]+=1
  if all(x==L(y)for x,y in zip(b,a))&((sum(map(sum,a))/l)==n):
   u=0;yield J([['['+J(map(str,x))+']',str(x[0])][L(x)==1]for x in a])
 if u:yield"!"

কৌতূহলের বাইরে আপনি কি সমাধানের সময় জটিলতা জানতে পেরেছেন? যদিও এখনও অ্যালগরিদম (এখনও) ব্যাখ্যা করার বিষয়ে চিন্তা করবেন না, যাতে অন্যেরা যারা এখনও চেষ্টা করছেন তাদের মজাদার নষ্ট না করে। ;)
মার্টিন ইন্ডার

আমি মনে করি এটি এমন কিছু L*n^(n*choose(n+11,n+2))যেখানে nওয়াইল্ডকার্ডের Lসংখ্যা এবং প্যাটার্নে অক্ষরের সংখ্যা। হুবহু দক্ষ নয়।
ব্যবহারকারী1502040

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

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