トラック
/
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静的クラスを扱う9つのタスクがあります。

1. 新しい辞書を作成する

空の辞書を返す(静的)メソッドDialingCodes.GetEmptyDictionary()を実装してください。

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

2. あらかじめ値が入った辞書を作成する

あらかじめ値が入った辞書があり、次の3つのダイヤルコードが含まれています。"United States of America"はコード1、"Brazil"はコード55、"India"はコード91です。あらかじめ値が入った辞書を返す(静的)メソッド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に登録すれば、62個のコンセプト178個の演習、そして本物の人間によるメンタリングとともに、C#を学んでマスターできます。すべて無料です。