ডিকশনারি হলো এলিমেন্টের একটি কালেকশন, যেখানে প্রতিটি এলিমেন্টে একটি কী (key) আর একটি মান থাকে; ডিকশনারির কোনো মেথডে একটি কী (key) পাঠালে তার সঙ্গে যুক্ত মানটি ফেরত পাওয়া যায়। অন্য ভাষায় ম্যাপ বা অ্যাসোসিয়েটিভ অ্যারে যে ভূমিকা পালন করে, ডিকশনারি তারই ভূমিকা পালন করে।
ডিকশনারি তৈরি করা যায় এভাবে:
new Dictionary<int, string>();
// Empty dictionary
অথবা
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
খেয়াল করুন, কী (key) আর মানের টাইপও ডিকশনারির সংজ্ঞার অংশ।
একবার তৈরি হয়ে গেলে, ডিকশনারির বিল্ট-ইন মেথড Add আর Remove ব্যবহার করে এন্ট্রি যোগ করা বা মুছে ফেলা যায়।
কী (key) দিয়ে ডিকশনারিতে ইনডেক্স করে ডিকশনারির মান পড়া বা হালনাগাদ করা হয়:
var numbers = new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// Set the value of the element with key 2 to "Deux"
numbers[2] = "Deux";
// Get the value of the element with key 2
numbers[2];
// => "Deux"
ডিকশনারিতে একটি মান আছে কি না, তা এভাবে পরীক্ষা করতে পারেন:
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
ডিকশনারির উপর এনুমারেট করলে তার কী (key) ও মানের জোড়াগুলোর উপর এনুমারেট হয়। এছাড়া ডিকশনারিতে এমন প্রপার্টিও থাকে, যা দিয়ে কেবল তার কী (key) বা মানের উপর এনুমারেট করা যায়।
এই অনুশীলনীতে আপনি একটি আন্তর্জাতিক ডায়ালিং কোড ডিকশনারির মাধ্যমে আন্তর্জাতিক ডায়ালিং কোডগুলো ট্র্যাক রাখার কোড লিখবেন।
ডিকশনারিটি তার কী (key) হিসেবে একটি ইন্টিজার (ডায়ালিং কোড) এবং তার মান হিসেবে একটি স্ট্রিং (দেশের নাম) ব্যবহার করে।
আপনার ৯টি কাজ আছে, যেগুলোতে DialingCodes স্ট্যাটিক ক্লাসটি জড়িত।
(স্ট্যাটিক) মেথড DialingCodes.GetEmptyDictionary() ইমপ্লিমেন্ট করুন, যা একটি খালি ডিকশনারি রিটার্ন করে।
DialingCodes.GetEmptyDictionary();
// => empty dictionary
এমন একটি প্রি-পপুলেটেড ডিকশনারি আছে, যেটিতে নিচের ৩টি ডায়ালিং কোড রয়েছে: "United States of America", যার কোড 1; "Brazil", যার কোড 55; এবং "India", যার কোড 91। প্রি-পপুলেটেড ডিকশনারিটি রিটার্ন করার জন্য (স্ট্যাটিক) মেথড DialingCodes.GetExistingDictionary() ইমপ্লিমেন্ট করুন:
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
(স্ট্যাটিক) মেথড DialingCodes.AddCountryToEmptyDictionary() ইমপ্লিমেন্ট করুন, যা একটি ডিকশনারি তৈরি করে এবং তাতে একটি ডায়ালিং কোড ও সংশ্লিষ্ট দেশের নাম যোগ করে।
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
(স্ট্যাটিক) মেথড DialingCodes.AddCountryToExistingDictionary() ইমপ্লিমেন্ট করুন, যা খালি নয় এমন একটি ডিকশনারিতে একটি ডায়ালিং কোড ও সংশ্লিষ্ট দেশের নাম যোগ করে।
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
(স্ট্যাটিক) মেথড DialingCodes.GetCountryNameFromDictionary() ইমপ্লিমেন্ট করুন, যা একটি ডায়ালিং কোড নেয় এবং তার সংশ্লিষ্ট দেশের নাম রিটার্ন করে। ডিকশনারিতে যদি ওই ডায়ালিং কোডটি না থাকে, তাহলে একটি খালি স্ট্রিং রিটার্ন করা হয়।
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
ডিকশনারিতে একটি ডায়ালিং কোড আছে কি না তা যাচাই করার জন্য (স্ট্যাটিক) মেথড DialingCodes.CheckCodeExists() ইমপ্লিমেন্ট করুন।
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
(স্ট্যাটিক) মেথড DialingCodes.UpdateDictionary() ইমপ্লিমেন্ট করুন, যা একটি ডায়ালিং কোড নেয় এবং ডিকশনারিতে তার সংশ্লিষ্ট দেশের নামকে প্যারামিটার হিসেবে পাঠানো দেশের নাম দিয়ে প্রতিস্থাপন করে। ডিকশনারিতে যদি ওই ডায়ালিং কোডটি না থাকে, তাহলে ডিকশনারি অপরিবর্তিত থাকে।
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 1, "Les États-Unis");
// => 1 => "Les États-Unis", 55 => "Brazil", 91 => "India"
DialingCodes.UpdateDictionary(
DialingCodes.GetExistingDictionary(), 999, "Newlands");
// 1 => "United States of America", 55 => "Brazil", 91 => "India"
(স্ট্যাটিক) মেথড DialingCodes.RemoveCountryFromDictionary() ইমপ্লিমেন্ট করুন, যা একটি ডায়ালিং কোড নেয় এবং ডিকশনারি থেকে তার সংশ্লিষ্ট রেকর্ড, ডায়ালিং কোড + দেশের নাম, সরিয়ে ফেলে।
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
(স্ট্যাটিক) মেথড DialingCodes.FindLongestCountryName() ইমপ্লিমেন্ট করুন, যা ডিকশনারিতে সংরক্ষিত সবচেয়ে লম্বা নামের দেশটির নাম রিটার্ন করবে।
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।