পলিস্ট্রিপগুলি নিম্নোক্ত নিয়ম মেনে চলার পলিওমিনোজগুলির একটি উপসেট:
- প্রতিটি টুকরা 1 বা একাধিক কোষ গঠিত
- কোনও কোষে দু'জনের বেশি প্রতিবেশী থাকতে পারে না
- কোষগুলির একটি গর্ত আবদ্ধ করা উচিত নয়
ফ্রি পলিওমিনোসগুলি স্বতন্ত্র হয় যখন অন্য কোনওটির অনমনীয় রূপান্তর (অনুবাদ, রোটেশন, রিফ্লেকশন বা গ্লাইড প্রতিবিম্ব) না হয় (টুকরোগুলি যা টিকিয়ে নিতে পারে এবং উল্টে যেতে পারে)। কোনও ফ্রি পলিওমিনো প্রতিবিম্বিত, ঘূর্ণন, প্রতিফলন বা গ্লাইড এর আকার পরিবর্তন করে না ( উইকিপিডিয়া )
উদাহরণস্বরূপ, 30 টি ফ্রি হেপস্টাস্ট্রিপস রয়েছে (7 দৈর্ঘ্যের পলিসট্রিপস)। 14x15 গ্রিডে প্যাক করা এগুলি সমস্ত এখানে।
চিত্রের কৃতিত্ব: মিরোস্লাভ ভাইচার
লক্ষ্য
একটি প্রোগ্রাম / ফাংশন লিখুন যা n
ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যার গ্রহণ করে এবং স্বতন্ত্র ফ্রি- n
পলিস্ট্রিপগুলি গণনা করে ।
n = 1 -> 1 (একটি একক বর্গ)
n = 2 -> 1 (2 টি স্কোয়ার দিয়ে তৈরি কেবল একটি সম্ভাব্য 2-পলিস্ট্রিপ রয়েছে)
n = 3 -> 2 (একটি লাইনে যোগ হওয়া 3 টি স্কোয়ারের সমন্বয়ে গঠিত এবং অন্যটি এল-আকারের)
n = 4 -> 3 (একটি সোজা, একটি এল-আকারের এবং একটি জেড-আকারের)
। । ।
পরীক্ষার কেস:
n polystrips
1 1
2 1
3 2
4 3
5 7
6 13
7 30
8 64
9 150
10 338
11 794
12 1836
13 4313
14 10067
15 23621
স্কোরিং
এটি কোড-গল্ফ , তাই সংক্ষিপ্ত কোডটি আরও ভাল। আমি অ্যালগরিদম এবং কোডটির বিস্তারিত ব্যাখ্যাগুলি অত্যন্ত প্রশংসা করব।
জে আংশিক রেফারেন্স বাস্তবায়ন
আমি প্রতিটি টুকরোটি "ভেক্টর" ফর্ম্যাটে বর্ণনা করার সিদ্ধান্ত নিয়েছি এবং একটি এন-পলিস্ট্রিপ টুকরো বর্ণনা করার জন্য আমার কেবল এন -2 ব্লক প্রয়োজন (কেবলমাত্র 1 2-পলিস্ট্রিপ রয়েছে এবং এটি স্পষ্টভাবে ফিরে এসেছে)। ব্লকগুলি আপেক্ষিক দিকটি বর্ণনা করে: 0 - কোনও পরিবর্তন নেই; 1 - বাম দিকে ঘুরুন; 2 - ডান দিকে ঘুরুন। কোনটি কোন দিকে শুরু হবে তা বিবেচনা করে না তবে কেবল পরবর্তী ঘরটি কোথায় স্থাপন করা হবে তা কেবল তা নির্দেশ করে। একটানা 0s এর যে কোনও সংখ্যা থাকতে পারে তবে 1s এবং 2s সর্বদা একা থাকে। এই প্রয়োগটি আংশিক, কারণ এটি গর্তগুলির জন্য অ্যাকাউন্ট করে না - n> 6 এর সমাধানগুলি গর্তগুলির সাথে টুকরোগুলিও গণনা করে।
101010
আপনার নমুনা স্বরলিপিতে)?