মার্চিং স্কোয়ারগুলি কম্পিউটার গ্রাফিক্স থেকে একটি অ্যালগরিদম, যা নমুনার গ্রিড থেকে 2D আইসোকন্টারগুলি পুনরুদ্ধার করতে ব্যবহৃত হয় (এটিও দেখুন, 3 ডি সেটিংসের জন্য এর বড় ভাই মার্চিং কিউবস )। ধারণাটি হ'ল গ্রিডের প্রতিটি কক্ষকে স্বাধীনভাবে প্রক্রিয়া করা এবং তার কোণে মানগুলির উপর ভিত্তি করে সেই ঘরের মধ্যবর্তী স্থানগুলি নির্ধারণ করা নির্ধারণ করা।
এই প্রক্রিয়াটির প্রথম পদক্ষেপটি কোণগুলি কনট্যুরের মানের উপরে বা নীচে রয়েছে কিনা তার উপর ভিত্তি করে কোন প্রান্তগুলি কনট্যুরের সাথে সংযুক্ত রয়েছে তা নির্ধারণ করা হয়। সরলতার জন্য, আমরা কেবল মানটির সংক্ষেপণগুলি বিবেচনা করব 0, যেমন কোণগুলি ইতিবাচক বা নেতিবাচক কিনা তা নিয়ে আমরা আগ্রহী। পার্থক্য করার ক্ষেত্রে রয়েছে :24 = 16

চিত্র উত্স: উইকিপিডিয়া
সাদা এবং কালো চিহ্নিতকরণ এখানে সত্যিকার অর্থে গুরুত্বপূর্ণ নয়, তবে নিশ্চিতভাবেই বলে যে সাদা ইতিবাচক এবং কালো positiveণাত্মক। আমরা এমন একটি বিষয়গুলিকে অগ্রাহ্য করব যেখানে এক কোণে ঠিক আছে 0।
স্যাডল পয়েন্টগুলি (কেস 5 এবং 10) কিছুটা অতিরিক্ত অসুবিধা প্রদান করে: এটি কোন কোণগুলি কেবলমাত্র দেখলে কোনটিটি ব্যবহার করা উচিত তা পরিষ্কার নয় clear চারটি কোণার গড় (যেমন কেন্দ্রের মানের একটি আনুমানিক) সন্ধান করে এবং ত্রিভুজগুলি এমনটি বেছে নিয়ে বিপরীত চিহ্নের সাহায্যে কোণগুলি থেকে কেন্দ্রকে পৃথক করে এটি সমাধান করা যেতে পারে। যদি গড়টি ঠিক 0হয় তবে উভয় ক্ষেত্রেই বেছে নেওয়া যেতে পারে।
সাধারণত, এই 16 টি কেসগুলি কেবলমাত্র একটি সন্ধানের টেবিলে সংরক্ষণ করা হয়। দক্ষতার জন্য এটি দুর্দান্ত, তবে অবশ্যই আমরা এখানে কোডটি সংক্ষিপ্ত হওয়ার জন্য পছন্দ করব । সুতরাং আপনার কাজ হ'ল এই দেখার পদক্ষেপটি সম্পাদন করা এবং যতটা সম্ভব সংক্ষিপ্ত কোডে মামলার একটি ASCII উপস্থাপনা মুদ্রণ করা।
চ্যালেঞ্জ
আপনাকে আপনার পছন্দের একটি স্থির ক্রমে চারটি কোণার (শূন্য-পূর্বের পূর্ণসংখ্যার) মান দেওয়া হবে। তারপরে আপনার স্যাডল পয়েন্টের কেসগুলি সঠিকভাবে সমাধান করে রূপকগুলির সঠিক লেআউট উত্পন্ন করা উচিত।
আপনি STDIN (বা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।
ইনপুট কোনও সুবিধাজনক স্ট্রিং বা তালিকার বিন্যাসে নেওয়া যেতে পারে।
নিম্নলিখিত 5x5 ব্লকগুলির মধ্যে একটিতে 16 টি কেসকে ASCII শিল্পে উপস্থাপন করা হবে:
o---o o---o o---o
| | | | | | |
| | |---| | | |
| | | | | | |
o---o o---o o---o
o---o o---o o---o o---o
|/ | | \| | | | |
| | | | | | | |
| | | | |\ | | /|
o---o o---o o---o o---o
o---o o---o
|/ | | \|
| | | |
| /| |\ |
o---o o---o
আপনার অবশ্যই কোনও শীর্ষস্থানীয় বা চলমান সাদা স্থান মুদ্রণ করা উচিত নয়, তবে আপনি একটি একক alচ্ছিক নিউলাইন মুদ্রণ করতে পারেন।
এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।
পরীক্ষার কেস
পরীক্ষার ক্ষেত্রে ধরে নেওয়া হয় যে ইনপুটটি শীর্ষ-বাম , উপরের-ডান , নীচে-বাম , নীচে-ডানদিকে ক্রমে দেওয়া হয়েছে । পরীক্ষার কেসগুলি 9 টি গ্রুপে উপস্থাপিত হয়, উপরে বর্ণিত 9 টি উপস্থাপনার প্রত্যেকটির সাথে একটি অনুরূপ (একই ক্রমে খালি ঘর থেকে শুরু করে দুটি স্যাডল পয়েন্ট দিয়ে শেষ হবে)।
[1, 2, 1, 3]
[-9, -2, -2, -7]
[4, 5, -1, -2]
[-1, -2, 3, 4]
[7, -7, 7, -7]
[-5, 5, -5, 5]
[1, -6, -4, -1]
[-2, 3, 3, 4]
[-1, 6, -4, -1]
[2, -3, 3, 4]
[-1, -6, 4, -1]
[2, 3, -3, 4]
[-1, -6, -4, 1]
[2, 3, 3, -4]
[3, -8, -9, 2]
[-3, 8, 9, -2]
[8, -3, -2, 9]
[-8, 3, 2, -9]
অধিকন্তু, নিম্নলিখিত পরীক্ষার কেসগুলি স্যাডল পয়েন্টগুলির মধ্যে (আপনার পছন্দ) ফেরত দিতে পারে:
[1, -4, -2, 5]
[-1, 4, 2, -5]