A realization

by nahin bin kaysar 07/07/2025 @ 11:51pm

দুইদিন আগে কোডফোর্সেস রাউন্ড ১০৩৫ এ আমি B সল্ভ না করে C সল্ভ করছিলাম। একদিক দিয়ে ভালোই লাগতেছিল। আমি রেয়ারলি তিন নাম্বার প্রব্লেম সল্ভ করতে পারি। সত্যি বলতে দুই নাম্বার প্রব্লেম নিয়ে তেমন আফসোস হইতেছিল না। অনেকেই পারতেছিল না।

আমি দুই নাম্বার প্রব্লেম ট্রাই করি নাই এমন না, ওইটা নিয়ে অনেকক্ষণ বসে ছিলাম। প্রব্লেম টা অনেকটা এরকমঃ দুইটা বিন্দুর স্থানাঙ্ক দেয়া থাকবে। প্রথম বিন্দু থেকে দ্বিতীয় বিন্দুতে যাইতে হবে। আরেকটা অ্যারে দেয়া ছিল। ওই অ্যারে তে কিছু দূরত্ব দেয়া ছিল। প্রথম থেকে শেষ বিন্দুতে ওই দূরত্ব ধরে ধরে যাইতে হবে। আমাকে বলতে হবে, এই কাহিনী করে আমি প্রথম বিন্দু থেকে শেষ বিন্দুতে যাইতে পারব কিনা।

আমার শুরুর চিন্তাভাবনা শুরুতে আমি বৃত্ত দিয়ে ভাবতেছিলাম। প্রথম বিন্দুকে কেন্দ্র করে অ্যারে এর প্রথম এলিমেনট এর সমান ব্যাসার্ধ নিয়ে একটা বৃত্ত আঁকাব। তারপর শেষ বিন্দুকে কেন্দ্র করে অ্যারের লাস্ট এলিমেন্ট এর সমান ব্যাসার্ধ নিয়ে আরেকটা বৃত্ত আঁকব। দুইটা বৃত্তের মধ্যে ছোট দূরত্ব (দুইটার পরিধির মধ্যকার ক্ষুদ্রতম) বের করব। তারপর দেখব, ওই দূরত্ব অ্যারের বাকি এলেমেন্টের যোগফল দিয়ে কাভার করা যায় কিনা - মূলত আমি প্রথম এবং শেষ দুইটা বৃত্তের মধ্যে দূরত্ব অন্য বৃত্ত দিয়ে কাভার করতে চাইছিলাম। এই আইডিয়া নিয়ে আমার ডাউট আসা শুরু হয়, যখন দেখলাম, অ্যারের মাঝে যদি অনেক বড় এমন কোন এলিমেন্ট থাকে যেটা অন্য সবার থেকে বর তাইলে ওই একটা বৃত্ত বাকি সবাইকে এনক্লোস করবে।

আমার শুরুর চিন্তাভাবনা আমি ভালো করে লিখি নাই, কারণঃ এটা ভুল আইডিয়া, অনেক জটিল চিন্তাভাবনা, আর আসল সল্যুশন অনেক সহজ।

ততক্ষণে আমি তিন নাম্বার প্রব্লেম সল্ভ করে ফালাইছি। পরে আবার B ধরছিলাম। হঠাত করে মনে পড়ল - যদি দুইটা বিন্দুকে জোড়া লাগায় দেই, তাইলে তো একটা বহুভুজ হয়! খালি আমার দেখতে হবে অ্যারের n এলিমেন্ট এবং জোড়া লাগানো দৈর্ঘ্য দিয়ে একটা ভ্যালিড পলিগণ বানানো যায় কিনা।

আমি তখন জানতাম না, একটা ভ্যালিড পলিগণ হওয়ার শর্ত কী। পরে আমি এইটা লিখে গুগল করে গিক্স ফর গিক্স থেকে একটা সলিউশন নিলাম। দেখলাম ওখানে চেক করতেছে n বাহুওয়ালা বহুভুজের যেকোনো n-1 সংখ্যক বাহুগুলার যোগফল বাকি বাহুর থেকে বেশি কিনা। যদি বেশি হয়, তাইলে একটা ভ্যালিড বহুভুজ হবে।

এটা মূলত¹ ত্রিভুজের চেকের মতই। আমি কোড কপি পেস্ট করে কিছু বেহুদা স্পেশাল কেস অ্যাড করলাম। এখানেই আমি করছিলাম ভুল। যাইহোক সাবমিট দিয়ে পরে রঙ আন্সার খাইছি।

কোড কপি করলে আসলে চিন্তাশক্তি একদমই লোপ পায়। আমি ওই কোড আর চেঞ্জ করি নাই। আমি স্পেশাল কেস অ্যাড করছিলাম ঠিক-ই। বাট মেইন কোড মোডিফাই করে আরো ভালো ভাবে জিনিসটা করা যাইত এবং অবশ্যই রঙ আন্সার দিত না।

পলিগনের ক্ষেত্রফল কিন্তু শুণ্য হইতে পারে। এটা কি অ্যালাউড। ক্ষেত্রফল শুণ্য হওয়া মানে হইতেছে, আমি একটা স্ট্রেইট লাইনে আছি। এভাবেও তো প্রথম বিন্দু থেকে দ্বিতীয় বিন্দুতে যাওয়া যায়।

পলিগনের চেকিং-এ খালি যোগফল বেশি অথবা সমান কিনা এটা দেখলেই কিন্তু হয়ে যাইত। আসলে তাই হইছে।

¹ আমি এই মাত্র ম্যাক থেকে উইন্ডোজ এ সুইচ করলাম। আমি ভাবতেছিলাম, আমি মনে হয় অভ্র তে টাইপ করা ভুলে গেছি। বাট জিনিসটা এমন না, ম্যাক এ অভ্র এর সাপোর্ট অনেক বাজে। আসলে সফটওয়্যার এ সমস্যা না। ওয়ার্ড সাজেশনে সমস্যা। আমার আসুসে টাইপ করা স্টিল ফিলস গ্রেট। -- ১১:৪১পিএম