বৈধ মেজেসের সংখ্যা


12

একটি WxHগ্রিড দেওয়া হয়েছে , সেখানে কতগুলি সম্ভাব্য ম্যাজ রয়েছে?

গোলকধাঁধা সম্পর্কে আপনি যে জিনিসগুলি জানেন:

  1. গ্রিডটি হুবহু Hস্কোয়ারের উঁচু এবং Wস্কোয়ার প্রশস্ত।
  2. স্কোয়ারের তিন প্রকার রয়েছে: শুরু, সমাপ্তি এবং খালি। আপনার গোলকধাঁধায় অবশ্যই 1 টি শুরু এবং 1 সমাপ্তি থাকা আবশ্যক এবং অবশিষ্ট সমস্ত স্কোয়ার খালি।
  3. পুরো গোলকধাঁধার চারদিকে প্রাচীর রয়েছে।
  4. নীচের নিয়মটি না ভেঙে প্রাচীরগুলি যে কোনও দুটি স্কোয়ারের প্রান্তে থাকতে পারে:
  5. স্টার্ট স্কোয়ার থেকে ফিনিশ স্কোয়ারের অবশ্যই একটি পথ থাকা দরকার।

অতএব, দুটি সংখ্যা দেওয়া হয়েছে Wএবং H, আপনাকে অবশ্যই সম্ভাব্য বর্গ / প্রাচীর কনফিগারেশনের সংখ্যার প্রতিনিধিত্বকারী একটি একক সংখ্যা অবশ্যই প্রদান করতে হবে। আপনি যে গ্যারান্টিযুক্ত হয়W*H > 1

উদাহরণস্বরূপ, 2x2গোলকধাঁধায় 100বিভিন্ন সম্ভাব্য কনফিগারেশন রয়েছে।

এটি একটি তাই সংক্ষিপ্ত উত্তরটি জেতে!


আকার এবং / বা রানটাইমের ক্ষেত্রে কোনও বাধা আছে? যদি না কেউ কোনও অ্যালগরিদম খুঁজে না পায় যা দক্ষতার সাথে গণনাটি গণনা করতে পারে (যা শক্ত দেখায়), আমি প্রত্যাশা করি যে বেশিরভাগ সমাধানগুলিতে ক্ষণস্থায়ী রানটাইম থাকবে। অর্থ, তারা এমনকি মাঝারি আকারে প্রবর্তিত হবে।
Reto Koradi

@ রিটোকোরাদি না, রানটাইম বাধা নেই। আমি নিশ্চিত নই যে সীমাবদ্ধতাগুলি সমস্যাটিকে অসম্ভব করে তোলে কিনা।
নাথান মেরিল

উত্তর:


3

পাইথন 2, 329 310 বাইট

from itertools import*
w,h=input()
R=range(w*h)
p=product
n=0
Z=[(x,y)for x,y in p(R,R)if abs(x%w-y%w)+abs(x/w-y/w)<2]
for s,f,W in p(R,R,p(*[((),z)for z in Z if z[0]<z[1]])):
 V={s};C=[s];v=0
 while C:
  c=C.pop();v|=c==f!=s;V|={c}
  for o,q in Z:C+=(c==o)*len({q,(o,q),(q,o)}-(V|set(W)))/3*[q] 
 n+=v
print n

@ নাথানের সাথে সমস্যাটি আলোচনার সময় আমি যে প্রোগ্রামটি ব্যবহার করছিলাম এটির গল্ফেড (এবং আরও অনেক অদক্ষ) সংস্করণ। আমি কিছু স্পেস ইনডেন্টগুলি ট্যাবগুলির সাথে প্রতিস্থাপন করে কয়েকটি বাইট সঞ্চয় করতে পারি, তবে আমি এটি পরে সংরক্ষণ করব।

অ্যালগরিদম কেবল প্রতিটি গোলকধাঁধা উত্পন্ন হয়, তারপরে শুরু থেকে বন্যা ভরাট করে দেখুন, আমরা শেষ পর্যায়ে কিছুটা পাস করি কিনা not

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