নিম্নলিখিত দৃশ্যের কল্পনা করুন: আপনি বন্ধুর সাথে যুদ্ধজাহাজ খেলছেন তবে প্রতারণার সিদ্ধান্ত নিন decide আপনার জাহাজটি যেখানে ব্যবহৃত হত সেখানে গুলি চালানোর পরে কোনও জাহাজটিকে সরিয়ে দেওয়ার পরিবর্তে আপনি কোনও জাহাজ একেবারে না রাখার সিদ্ধান্ত নেন। আপনি তাকে বলুন যে তার সমস্ত শটগুলি মিস হয়েছে, যতক্ষণ না এইভাবে জাহাজ স্থাপন করা অসম্ভব হয়।
আপনাকে কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখতে হবে যা কোনওভাবে 3 টি যুক্তি লাগে: ক্ষেত্রের আকার, জাহাজের আকারের পরিমাণ এবং শটের একটি তালিকা।
যুদ্ধক্ষেত্র
প্রদত্ত প্যারামিটারগুলির মধ্যে একটি হ'ল বোর্ডের আকার। যুদ্ধক্ষেত্রটি কোষগুলির একটি বর্গক্ষেত্র এবং প্রদত্ত প্যারামিটারটি বর্গক্ষেত্রের একদিকে কেবল।
উদাহরণস্বরূপ, নীচে 5 আকারের একটি বোর্ড রয়েছে।
ক্ষেত্রের স্থানাঙ্কগুলি 2-উপাদান স্ট্রিং হিসাবে নির্দিষ্ট করা হয়: একটি সংখ্যা পরে একটি চিঠি। কোনও বিশেষ ক্ষেত্রে আপনি চিঠিগুলির উপর নির্ভর করতে পারেন।
চিঠিটি কলামটি নির্দিষ্ট করে, নম্বরটি ঘরের সারি নির্দিষ্ট করে (1-ইনডেক্সড)। উপরের ছবিতে উদাহরণস্বরূপ, হাইলাইটেড সেলটি দ্বারা চিহ্নিত করা হয়েছে "D2"
।
যেহেতু কেবলমাত্র 26 টি অক্ষর রয়েছে তাই ক্ষেত্রটি 26x26 এর চেয়ে বড় হতে পারে না।
জাহাজ
জাহাজগুলি 1 বা ততোধিক ব্লকের সরল রেখা। জাহাজের পরিমাণ একটি তালিকায় নির্দিষ্ট করা হয়েছে, যেখানে প্রথম উপাদানটি হচ্ছে 1-সেল জাহাজের পরিমাণ, দ্বিতীয় - 2-সেল জাহাজের এবং দ্বিতীয়।
উদাহরণস্বরূপ, তালিকাটি [4,1,2,0,1]
নিম্নলিখিত শিপসেটটি তৈরি করবে:
যুদ্ধক্ষেত্রে স্থাপন করা হলে, জাহাজগুলি একে অপরকে ছেদ করতে পারে না, এমনকি একে অপরকে স্পর্শও করতে পারে না। এমনকি কোণেও নয়। তারা তবে মাঠের প্রান্তগুলিকে স্পর্শ করতে পারে।
নীচে আপনি বৈধ জাহাজ স্থাপনের একটি উদাহরণ দেখতে পাচ্ছেন:
আপনি ধরে নিতে পারেন যে প্রদত্ত শিপসেটের জন্য, প্রদত্ত আকারের খালি বোর্ডে সর্বদা একটি স্থান উপস্থিত থাকে।
আউটপুট
যদি এই ধরণের জাহাজের স্থান উপস্থিত থাকে তবে আপনাকে সেগুলির কোনও আউটপুট দিতে হবে।
প্রোগ্রামটি 3 টির মধ্যে উভয়েরই এসসিআই অক্ষরের একটি নিউলাইন-বিভক্ত ম্যাট্রিক্স আউটপুট দিতে হয় - একটি ফাঁকা সেল বোঝাতে, একটি - একটি জাহাজের টুকরা, এবং একটি - "মিস" হিসাবে চিহ্নিত একটি ঘর। অন্য কোনও অক্ষরের আউটপুট হওয়া উচিত নয়।
উদাহরণ স্বরূপ,
ZZ@Z
\@@Z
@\\Z
\Z\\
(এই উদাহরণে, আমি @
ফাঁকা ঘর, \
একটি "মিসড" সেল এবং Z
শিপ টুকরা হতে সংজ্ঞায়িত করেছি )
যদি এ জাতীয় কোনও স্থান উপস্থিত না থাকে তবে প্রোগ্রাম / ফাংশনটি কোনও আউটপুট না নিয়েই ফিরে আসা উচিত।
ইনপুট
আপনি যদি একটি ফুলব্লাউন প্রোগ্রাম করার সিদ্ধান্ত নেন, তবে তালিকাগুলি কীভাবে ইনপুট তা আপনাকে নির্দিষ্ট করে দেওয়া উচিত, কেউ কেউ যুক্তি দিয়ে যেতে পারে, কিছু স্টিডিনের মাধ্যমে।
এটি কোড-গল্ফ , সর্বনিম্ন পরিমাণে অক্ষরের জয়।
একটি উদাহরণ অ golfed অপ্টিমাইজ সমাধান খুঁজে পাওয়া যেতে পারে এখানে
দিয়ে কম্পাইল -std=c99
, প্রথম যুক্তি বোর্ড আকার, অন্যান্য আর্গুমেন্ট জাহাজ মাপ আছে। শটগুলির একটি নতুনলাইন দ্বারা পৃথক তালিকা স্ট্ডিনে দেওয়া হয়। উদাহরণ:
./a 4 1 1 1 <<< $'A2\nA4\nB3\nC3\nC4\D4'
10x10
একটি 4,3,2,1
শিপসেটের সাথে তাত্ক্ষণিকভাবে গণনা করে
26x26
? আমি রেজিএক্সপস এবং পুনরাবৃত্তির উপর ভিত্তি করে একটি সমাধান স্কেচ করেছিলাম এবং এটি ক্ষেত্রের চেয়ে বেশি ধীরে ধীরে = অব্যর্থ6x6
। হয় আমি খুব বোকা কিছু করি, বা উত্তরের অভাবের অর্থ অন্যদেরও সফলতা নেই।