مسیرها
/
C#
C#
/
تمرین‌ها
/
خبره‌ی تماس‌های بین‌المللی
خبره‌ی تماس‌های بین‌المللی

خبره‌ی تماس‌های بین‌المللی

تمرین یادگیری

مقدمه

دیکشنری

«دیکشنری» مجموعه‌ای از عناصر است که هر عنصر آن از یک «کلید» و یک «مقدار» تشکیل می‌شود، به‌گونه‌ای که اگر کلیدی را به یکی از «متد»های دیکشنری بدهید، مقدار متناظر با آن برگردانده می‌شود. نقش آن همان نقش «مپ» یا «آرایه‌ی انجمنی» در زبان‌های دیگر است.

یک دیکشنری را می‌توان به شکل زیر ساخت:

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"

توجه کنید که نوع کلید و مقدار بخشی از تعریف دیکشنری است.

پس از ساخته شدن، می‌توان با متدهای توکار Add و Remove درایه‌هایی را به دیکشنری اضافه یا از آن حذف کرد.

خواندن یا به‌روزرسانی مقدارها در یک دیکشنری با نمایه‌گذاری آن به‌کمک یک کلید انجام می‌شود:

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

شمارش روی یک دیکشنری، جفت‌های کلید و مقدار آن را شمارش می‌کند. دیکشنری ویژگی‌هایی هم دارد که امکان شمارش روی کلیدها یا مقدارهای آن را فراهم می‌کنند.

دستورالعمل‌ها

در این تمرین، کدی می‌نویسید که کدهای تلفن بین‌المللی را در قالب یک دیکشنری کد تلفن بین‌المللی نگه دارد.

این دیکشنری برای کلیدهایش از عدد صحیح (کد تلفن) و برای مقدارهایش از رشته (نام کشور) استفاده می‌کند.

۹ تسک دارید که همه به کلاس استاتیک DialingCodes مربوط می‌شوند.

1. ساخت یک دیکشنری جدید

متد (استاتیک) DialingCodes.GetEmptyDictionary() را پیاده‌سازی کنید که یک دیکشنری خالی برمی‌گرداند.

DialingCodes.GetEmptyDictionary();
// => empty dictionary

2. ساخت یک دیکشنری از پیش پر شده

یک دیکشنری از پیش پر شده وجود دارد که این ۳ کد تلفن را در خود دارد: "United States of America" با کد ۱، "Brazil" با کد ۵۵ و "India" با کد ۹۱. متد (استاتیک) DialingCodes.GetExistingDictionary() را پیاده‌سازی کنید تا این دیکشنری از پیش پر شده را برگرداند:

DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"

3. افزودن یک کشور به دیکشنری خالی

متد (استاتیک) DialingCodes.AddCountryToEmptyDictionary() را پیاده‌سازی کنید که یک دیکشنری می‌سازد و یک کد تلفن و نام کشور مرتبط با آن را به آن اضافه می‌کند.

DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"

4. افزودن یک کشور به دیکشنری موجود

متد (استاتیک) DialingCodes.AddCountryToExistingDictionary() را پیاده‌سازی کنید که یک کد تلفن و نام کشور مرتبط با آن را به یک دیکشنری غیرخالی اضافه می‌کند.

DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
  44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"

5. گرفتن نام کشوری که با یک کد تلفن مطابقت دارد

متد (استاتیک) DialingCodes.GetCountryNameFromDictionary() را پیاده‌سازی کنید که یک کد تلفن می‌گیرد و نام کشور متناظر را برمی‌گرداند. اگر کد تلفن در دیکشنری نباشد، رشته‌ی خالی برگردانده می‌شود.

DialingCodes.GetCountryNameFromDictionary(
  DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"

DialingCodes.GetCountryNameFromDictionary(
  DialingCodes.GetExistingDictionary(), 999);
// => string.Empty

6. بررسی وجود یک کشور در دیکشنری

متد (استاتیک) DialingCodes.CheckCodeExists() را پیاده‌سازی کنید تا بررسی کنید آیا یک کد تلفن در دیکشنری وجود دارد یا نه.

DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true

7. به‌روزرسانی نام یک کشور

متد (استاتیک) 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"

8. حذف یک کشور از دیکشنری

متد (استاتیک) DialingCodes.RemoveCountryFromDictionary() را پیاده‌سازی کنید که یک کد تلفن می‌گیرد و رکورد متناظر، یعنی کد تلفن به همراه نام کشور، را از دیکشنری حذف می‌کند.

DialingCodes.RemoveCountryFromDictionary(
  DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"

9. یافتن کشوری با بلندترین نام

متد (استاتیک) DialingCodes.FindLongestCountryName() را پیاده‌سازی کنید که نام کشوری با بلندترین نام را از میان نام‌های ذخیره‌شده در دیکشنری برمی‌گرداند.

DialingCodes.FindLongestCountryName(
  DialingCodes.GetExistingDictionary());
// => "United States of America"
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
C# Exercism

آماده‌اید خبره‌ی تماس‌های بین‌المللی را شروع کنید؟

در Exercism ثبت‌نام کنید تا C# را همراه با 62 مفهوم178 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.