ট্র্যাক
/
Rust
Rust
/
অনুশীলনী
/
স্যাডল পয়েন্ট
স্যাডল পয়েন্ট

স্যাডল পয়েন্ট

মধ্যম

ভূমিকা

আপনি আপনার বাড়ির কাছে বনের মধ্যে একটি গাছের ঘর বানানোর পরিকল্পনা করছেন, যাতে সূর্যোদয় ও সূর্যাস্ত দেখতে পারেন।

স্থানীয় একটি জরিপ কোম্পানি থেকে আপনি এমন তথ্য পেয়েছেন, যেখানে মানচিত্রের প্রতিটি আয়তাকার অংশে থাকা প্রতিটি গাছের উচ্চতা দেখানো হয়েছে। গাছের ঘরের জন্য ভালো গাছ খুঁজে পেতে আপনাকে মানচিত্রের প্রতিটি গ্রিড বিশ্লেষণ করতে হবে।

একটি ভালো গাছ হতে হলে দুটোই লাগবে:

  • পূর্ব ও পশ্চিমের প্রতিটি গাছের চেয়ে উঁচু, যাতে সূর্যোদয় ও সূর্যাস্তের যতটা সম্ভব ভালো দৃশ্য আপনি পেতে পারেন।
  • উত্তর ও দক্ষিণের প্রতিটি গাছের চেয়ে খাটো, যাতে গাছে ওঠার পরিমাণ কম হয়।

নির্দেশনা

আপনার কাজ হলো সম্ভাব্য সেই গাছগুলো খুঁজে বের করা যেখানে আপনি আপনার গাছের ঘর বানাতে পারবেন।

ডেটা কোম্পানি এমন গ্রিড হিসেবে ডেটা দেয় যেগুলো গাছের উচ্চতা দেখায়। গ্রিডের সারিগুলো পূর্ব-পশ্চিম দিক বোঝায়, আর কলামগুলো উত্তর-দক্ষিণ দিক বোঝায়।

একটি গ্রহণযোগ্য গাছ তার সারিতে সবচেয়ে বড় হবে, আবার তার কলামে সবচেয়ে ছোট হবে।

কোনো গ্রিডে একেবারেই ভালো গাছ নাও থাকতে পারে। অথবা একটিও থাকতে পারে, এমনকি কয়েকটিও।

এখানে একটি গ্রিড আছে যেখানে ঠিক একটি প্রার্থী গাছ আছে।

      ↓
      1  2  3  4
    |-----------
  1 | 9  8  7  8
→ 2 |[5] 3  2  4
  3 | 6  6  7  1
  • সারি ২-এ মানগুলো ৫, ৩, ২ আর ৪। সবচেয়ে বড় মানটি ৫।
  • কলাম ১-এ মানগুলো ৯, ৫ আর ৬। সবচেয়ে ছোট মানটি ৫।

তাই [2, 1] বিন্দুটি (সারি: ২, কলাম: ১) গাছের ঘর বানানোর জন্য দারুণ একটি জায়গা।

Rust-এ ইনডেক্স শুরু হয় 0 থেকে

প্রথা অনুযায়ী, Rust-এ ক্রমানুসারে সাজানো মানের সিকোয়েন্সের ভেতরের উপাদানগুলো 0 থেকে শুরু করে নম্বর দেওয়া হয় ("ইনডেক্স করা হয়")। এই README-তে অনুশীলনীর বাকি বর্ণনায় কী লেখা আছে তা যা-ই হোক এটি প্রযোজ্য, যেমন 1 থেকে শুরু হওয়া ইনডেক্সের উল্লেখ থাকলে, তাই সেই ইনডেক্স নম্বরগুলোকে Rust-এর ইনডেক্স নম্বরে রূপান্তর করতে আপনাকে 1 বিয়োগ করতে হবে।

কার্যকারিতার নোটিশ

এই অনুশীলনীতে ম্যাট্রিক্সের বিষয়বস্তু সংরক্ষণ করতে একটি ভেক্টরের ভেক্টর ব্যবহার করা হয়েছে। যদিও এই অনুশীলনীটি শিক্ষার্থীদের ভেক্টর সম্পর্কে মৌলিক ধারণা, যেমন ইনডেক্সিং, বুঝতে এবং নেস্টেড ডেটা টাইপ বৈধ তা জানতে সাহায্য করার জন্য তৈরি, তবুও উচ্চ-কার্যক্ষমতার ম্যাট্রিক্স বীজগণিত এবং বড় পরিমাণ ডেটার অনুরূপ দক্ষ প্রক্রিয়াকরণের ক্ষেত্রে ভেক্টরের ভেক্টর একটি কম উপযুক্ত পছন্দ।

এই অদক্ষতার বিস্তারিত ব্যাখ্যা এই অনুশীলনী এবং সাধারণভাবে এই শেখার ট্র্যাকের পরিধির বাইরে। এই দিকটি ক্যাশ লোকালিটি নামে পরিচিত, এবং আধুনিক কম্পিউটার আর্কিটেকচারের খুঁটিনাটি সম্পর্কে আরও জানতে চাইলে সেই লিঙ্কে ক্লিক করে এর একটি ভালো ভূমিকা খুঁজে পেতে পারেন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Rust Exercism

স্যাডল পয়েন্ট শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Rust ট্র্যাকের 99টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।