কল্পনা করুন যে আমাদের কিছু পলিওমিনো রয়েছে এবং তাদের স্বতন্ত্ররূপে সনাক্ত করতে চান, তবে পলিওমিনোগুলি ঘোরানো যেতে পারে, তাই অন্ধভাবে তাদের হ্যাশ করলে কোনও টুকরা এবং তার ঘূর্ণনের জন্য আমাদের একই আঙুলের ছাপ দেয় না (সাধারণভাবে)।
উদাহরণস্বরূপ যদি আমাদের কাছে এল-টেট্রোমিনো থাকে
x
x
xx
আমরা এটির যে কোনওটির মতোই ফিঙ্গারপ্রিন্ট পেতে চাই:
xx
x x xxx
xxx , x or x
দ্রষ্টব্য: আমরা কেবলমাত্র বিমানে ঘুরানোর অনুমতি দিই (যেমন তারা একতরফা পলিওমিনোস) এবং তাই নীচের পলিওমিনো অন্যরকম হবে:
x
x
xx
চ্যালেঞ্জ
এই চ্যালেঞ্জটির জন্য কাজটি হল একটি ফিঙ্গারপ্রিন্টিং-ফাংশন / প্রোগ্রাম প্রয়োগ করা যা একটি বুলিয়ান / মূল্যবান ম্যাট্রিক্স / তালিকার তালিকা / স্ট্রিং / .. একটি পলিওমিনো এনকোডিং করে এবং একটি স্ট্রিং প্রদান করে - একটি পলিওমিনোর ফিঙ্গারপ্রিন্ট । সম্ভাব্য আবর্তনের সমস্তটির জন্য আঙুলের ছাপ সমান হতে হবে (সাধারণভাবে 4)।
ইনপুট আউটপুট
- এবং (উদাঃ খালি পলিওমিনো নেই)
- আপনি গ্যারান্টিযুক্ত যে যতটা সম্ভব ছোট (যেমন সমস্ত এবং এন ফিট করার জন্য ছাঁটা হয়
- আপনি গ্যারান্টিযুক্ত যে ইনপুট হয়
- কেবল সংযুক্ত
- কোন গর্ত নেই
- আউটপুট অবশ্যই একটি স্ট্রিং হতে হবে যা পলিওমিনোগুলির প্রতিটি সম্ভাব্য ঘূর্ণনের জন্য একই
উদাহরণ
এখানে কিছু সমতুল্য ক্লাস রয়েছে, প্রতিটি শ্রেণীর জন্য আঙুলের ছাপ একই হতে হবে এবং দুটি স্বতন্ত্র শ্রেণীর যে কোনও দুটি পলিমিনোসের জন্য তাদের পৃথক হওয়া উচিত।
উদাহরণ থেকে এল-টেট্রোমিনোর আবর্তন:
[[1,0],[1,0],[1,1]]
[[0,0,1],[1,1,1]]
[[1,1],[0,1],[0,1]]
[[1,1,1],[1,0,0]]
জে-টেট্রোমিনো:
[[0,1],[0,1],[1,1]]
[[1,1,1],[0,0,1]]
[[1,1],[1,0],[1,0]]
[[1,0,0],[1,1,1]]
ইউনিট পলিমিনো:
[[1]]
একটি বার:
[[1,1,1,1,1]]
[[1],[1],[1],[1],[1]]
একটি কোণ:
[[1,1],[1,0]]
[[1,0],[1,1]]
[[0,1],[1,1]]
[[1,1],[0,1]]
ওয়াট-pentomino:
[[1,0,0],[1,1,0],[0,1,1]]
[[0,0,1],[0,1,1],[1,1,0]]
[[1,1,0],[0,1,1],[0,0,1]]
[[0,1,1],[1,1,0],[1,0,0]]
""
(খালি স্ট্রিং) করি তবে আমি কি সমস্ত প্রয়োজনীয়তা পূরণ করেছি?