শেষ উইল

শেষ উইল

লার্নিং অনুশীলনী

ভূমিকা

কোড সংগঠনের একটি গুরুত্বপূর্ণ পদ্ধতি হলো নেমস্পেসের ব্যবহার। ক্লাস ও মডিউল নেমস্পেস প্রদান করে। দুটি মেথডের নামের সংঘর্ষ হতে পারে, যা তাদের আলাদা আলাদা নেমস্পেসে রেখে সমাধান করা যায়। নেমস্পেস নেস্টেড হতে পারে, যা বড় কোড বেস সাজাতে সাহায্য করতে পারে। স্কোপ-রেজোলিউশন অপারেটর :: দিয়ে নেমস্পেসে অ্যাক্সেস করা হয়।

নিচের উদাহরণে দুটি ভিন্ন foo মেথডের ব্যবহার দেখানো হয়েছে। নিজ নিজ নেমস্পেস প্রিফিক্স করে এদের একসাথে ব্যবহার করা হয়েছে।

class MyNamespace
  def self.foo
    44
  end

  class MyInnerNamespace
    def self.baz
      90
    end
  end
end

class MyOtherNamespace
  def self.foo
    -2
  end
end

p MyNamespace::foo + MyOtherNamespace::foo * MyNamespace::MyInnerNamespace::baz  # => -136

মনে রাখবেন, কোন কোডটি নির্বাহ হচ্ছে তার অবস্থানের উপর ভিত্তি করে নেমস্পেসগুলো ব্যাখ্যা করা হয়। root নেমস্পেসের কোনো কিছু বোঝাতে (অর্থাৎ সংজ্ঞায়িত সব নেমস্পেসের বাইরের কিছু), :: দিয়ে শুরু করুন।

যেমন:

class Example
  def self.example
    5
  end
end

class MyNamespace

  class Example
    def self.example
      10
    end
  end

  def self.call_example
    p Example::example  # => 10
    p ::Example::example  # => 5
  end
end

নির্দেশনা

আপনি একটি স্বনামধন্য আইন সংস্থায় কাজ করেন, যেটি অনন্য উইল-সংক্রান্ত অনুরোধ নিষ্পত্তিতে বিশেষজ্ঞ।

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

কোনো পরিবার যাতে একা ভল্ট খুলতে না পারে, তাই তাদের জ্ঞানকে আপনার শেষ উইল থেকে জানা একটি গোপন মডিফায়ারের সঙ্গে মিলিয়েই ভল্ট খোলা যায়।

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

EstateExecutor নামে একটি নেমস্পেস ডিফাইন করুন। পরের কাজগুলোর কোড EstateExecutor নেমস্পেসের বডির ভেতরে ডিফাইন করতে হবে।

class SomeName
  # The space between the class/module name
  # and the `end` keyword
  # is called body of the  namespace.
end

এটাই আপনার বড় মুহূর্ত। গোপন অ্যাকাউন্ট নম্বরটি প্রকাশ করার গোপন মডিফায়ার কী কেবল আপনারই কাছে আছে।

assemble_account_number(secret_modifier) মেথডটি ডিফাইন করুন, যেটি আর্গুমেন্ট হিসেবে Integer টাইপের গোপন মডিফায়ার নেয় এবং Integer টাইপের একত্র করে পাওয়া অ্যাকাউন্ট নম্বর রিটার্ন করে।

সঠিক নম্বরটি পেতে হলে তিনটি পরিবারের প্রত্যেকটির bank_number_part যোগ করতে হবে।

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

assemble_code মেথডটি ডিফাইন করুন, যেটি তিনটি পরিবারের টুকরোগুলোকে একত্র করে একটি Integer ফলাফল বানিয়ে ফলাফল কোডটি রিটার্ন করে। মেথডটির কোনো আর্গুমেন্ট নেই এবং এটি কেবল পরিবারগুলোর সংশ্লিষ্ট নেমস্পেসের তথ্যের উপর নির্ভর করে।

তৈরি করেছেন

  • @vaeng (মূল C++ অনুশীলনী)
  • @vaiapatta1985 (রুবিতে রূপান্তর)
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Ruby Exercism

শেষ উইল শুরু করতে প্রস্তুত?

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