পটভূমি
রডগুলির একটি (বদ্ধ) শৃঙ্খলা বিবেচনা করুন, যার প্রত্যেকটির পূর্ণসংখ্যার দৈর্ঘ্য রয়েছে। প্রদত্ত শৃঙ্খলে আপনি কতগুলি স্বতন্ত্র গর্ত-মুক্ত পলিওমিনোস গঠন করতে পারেন? বা অন্য কথায়, অক্ষ-সারিবদ্ধ পক্ষের সাথে কতগুলি ভিন্ন স্ব-স্ব-ছেদ করা বহুভুজ আপনি প্রদত্ত শৃঙ্খল দিয়ে গঠন করতে পারেন?
আসুন একটি উদাহরণ তাকান। 1 এবং 2 দৈর্ঘ্যের 8 রড সমন্বিত একটি নির্দিষ্ট চেইন বিবেচনা করুন, যা আমরা হিসাবে প্রতিনিধিত্ব করতে পারি [1, 1, 2, 2, 1, 1, 2, 2]
। আবর্তন এবং অনুবাদগুলি পর্যন্ত, কেবলমাত্র 8 টি সম্ভাব্য পলিমিনয়েস রয়েছে (আমরা বিভিন্ন প্রতিচ্ছবি গণনা করি):
এই প্রথম রডটি গা dark় নীল এবং তারপরে আমরা বহুভুজকে পাল্টা-ঘড়ির কাঁটা দিক থেকে অনুভূত করি।
ঘূর্ণন বোধ উপরোক্ত উদাহরণে ফলাফলকে প্রভাবিত করে না। তবে আসুন আরেকটি শৃঙ্খলা বিবেচনা করা যাক [3, 1, 1, 1, 2, 1, 1]
, যা নিম্নলিখিত 3 টি পলিওমিনোস দেয়:
লক্ষ্য করুন যে আমরা সর্বশেষ পলিওমিনোর প্রতিচ্ছবি অন্তর্ভুক্ত করি না , কারণ এটির জন্য ঘড়ির কাঁটার দিকের পথচলা দরকার require
যদি আমাদের একই দৈর্ঘ্যের আরও নমনীয় চেইন থাকে তবে [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
আমরা 9 টি মোট কয়েকটি পলিওনিনয়েসের মধ্যে উভয় প্রতিচ্ছবি তৈরি করতে সক্ষম হব:
চ্যালেঞ্জ
একটি চেইন একটি বিবরণ, একটি বিন্যাস বা অনুরূপ যেমন দেওয়া, রড ব্যবহার করে (ঘুর্ণন এবং অনুবাদ পর্যন্ত) স্বতন্ত্র polyominoes সংখ্যা আপনি গঠন করতে পারেন তা নির্ধারণ অনুক্রমে সময় ঘড়ির কাঁটার বিপরীতে অর্থে ঘের কাছাকাছি যাচ্ছে।
দয়া করে একটি পূর্ণাঙ্গ প্রোগ্রাম লিখুন এবং কমান্ড লাইন থেকে আপনার কোডটি সংকলন করতে (প্রযোজ্য ক্ষেত্রে) অন্তর্ভুক্ত করুন এবং আপনার কোডটি চালান। আপনার ভাষার জন্য দয়া করে একটি নিখরচায় সংকলক / দোভাষীর একটি লিঙ্ক অন্তর্ভুক্ত করুন।
আপনার প্রোগ্রামটি STDIN থেকে ইনপুটটি পড়া উচিত। প্রথম লাইনে একটি পূর্ণসংখ্যা এম থাকবে । পরবর্তী এম লাইনগুলি পরীক্ষার কেস হবে, যার প্রত্যেকটিই রড দৈর্ঘ্যের একটি স্থান-বিভাজিত তালিকা হবে। তোমার প্রোগ্রাম প্রিন্ট উচিত এম স্বতন্ত্র polyominoes সংখ্যা গঠিত যাবে না - প্রতিটি যা একটি একক পূর্ণসংখ্যা নিয়ে গঠিত stdout- এ, এর লাইন।
আপনার অবশ্যই একটি একক থ্রেড ব্যবহার করা উচিত।
আপনার প্রোগ্রামটি কোনও সময়ে 1 গিগাবাইটের বেশি মেমরি ব্যবহার করা উচিত নয়। (এটি সম্পূর্ণ কঠোর সীমা নয়, তবে আমি আপনার এক্সিকিউটেবলের মেমরির ব্যবহার নিরীক্ষণ করব এবং ধারাবাহিকভাবে 1 জিবি-র বেশি ব্যবহার করে এমন কোনও প্রক্রিয়া বা এর উপরে উল্লেখযোগ্যভাবে স্পাইকগুলি নষ্ট করব will)
অতিরিক্ত পরিমাণে প্রাক-গণনা রোধ করতে আপনার কোডটি 20,000 বাইটের বেশি হওয়া উচিত নয় এবং আপনাকে কোনও ফাইল পড়তে হবে না।
আপনার অবশ্যই নির্দিষ্ট পরীক্ষার কেসগুলি বেছে নেওয়া উচিত নয় (যেমন তাদের ফলাফলগুলি হার্ডকোডিং করে)। যদি আপনি সন্দেহ করেন যে আপনি এটি করেন তবে আমি নতুন বেঞ্চমার্ক সেট তৈরি করার অধিকার সংরক্ষণ করি। পরীক্ষার সেটগুলি এলোমেলো, সুতরাং সেইগুলিতে আপনার প্রোগ্রামটির পারফরম্যান্স স্বেচ্ছাসেবী ইনপুটটিতে তার সম্পাদনের জন্য প্রতিনিধি হওয়া উচিত। আপনার কেবলমাত্র অনুমান করার অনুমতি দেওয়া হ'ল রড দৈর্ঘ্যের সমষ্টি।
স্কোরিং
আমি এন = 10, 11, ..., 20 রডের চেইনের জন্য বেঞ্চমার্ক সেট সরবরাহ করেছি । প্রতিটি পরীক্ষার সেটটিতে 1 টি থেকে 4 এর মধ্যে দৈর্ঘ্যের 50 টি এলোমেলো চেইন থাকে।
আপনার প্রাথমিক স্কোরটি বৃহত্তম এন যার জন্য আপনার প্রোগ্রামটি পুরো পরীক্ষার সেটটি 5 মিনিটের মধ্যে (আমার মেশিনে, উইন্ডোজ 8 এর অধীনে) সম্পূর্ণ করে। টাই ব্রেকারটি সেই পরীক্ষার সেটটিতে আপনার প্রোগ্রামের দ্বারা নেওয়া প্রকৃত সময় হবে।
যদি কেউ সবচেয়ে বড় টেস্ট সেটটিকে পরাজিত করে তবে আমি আরও বড়গুলি যোগ করতে থাকব।
পরীক্ষার মামলা
আপনার প্রয়োগের নির্ভুলতা পরীক্ষা করতে আপনি নিম্নলিখিত পরীক্ষার কেসগুলি ব্যবহার করতে পারেন।
Input Output
1 1 0
1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1 1 1 9
1 1 1 1 1 1 1 1 1 1 1 1 36
1 1 1 1 1 1 1 1 1 1 1 1 1 1 157
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 758
1 1 2 2 1 1 2 2 8
1 1 2 2 1 1 2 2 1 1 23
1 1 2 2 1 1 2 2 1 1 2 2 69
1 2 1 2 1 2 1 2 3
1 2 1 2 1 2 1 2 1 2 1 2 37
1 2 3 2 1 2 3 2 5
1 2 3 2 1 2 3 2 1 2 3 2 23
3 1 1 1 2 1 1 3
1 2 3 4 5 6 7 1
1 2 3 4 5 6 7 8 3
1 2 3 4 5 6 7 8 9 10 11 5
2 1 5 3 3 2 3 3 4
4 1 6 5 6 3 1 4 2
3 5 3 5 1 4 1 1 3 5
1 4 3 2 2 5 5 4 6 4
4 1 3 2 1 2 3 3 1 4 18
1 1 1 1 1 2 3 3 2 1 24
3 1 4 1 2 2 1 1 2 4 1 2 107
2 4 2 4 2 2 3 4 2 4 2 3 114
আপনি এখানে এগুলির সাথে একটি ইনপুট ফাইল খুঁজে পাবেন ।
লিডারবোর্ড
User Language Max N Time taken (MM:SS:mmm)
1. feersum C++ 11 19 3:07:430
2. Sp3000 Python 3 18 2:30:181