Un dictionnaire est une collection d'éléments où chaque élément est composé d'une clé et d'une valeur, de sorte que si l'on passe une clé à une méthode du dictionnaire, la valeur associée est renvoyée. Il joue le même rôle que les maps ou les tableaux associatifs dans d'autres langages.
On peut créer un dictionnaire comme suit :
new Dictionary<int, string>();
// Empty dictionary
Ou
new Dictionary<int, string>
{
[1] = "One",
[2] = "Two"
};
// Or
new Dictionary<int, string>
{
{1, "One"},
{2, "Two"}
};
// 1 => "One", 2 => "Two"
Note que les types de la clé et de la valeur font partie de la définition du dictionnaire.
Une fois construit, on peut ajouter ou supprimer des entrées d'un dictionnaire à l'aide de ses méthodes intégrées Add et Remove.
Pour récupérer ou mettre à jour des valeurs dans un dictionnaire, on l'indexe à l'aide d'une clé :
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"
Tu peux tester si une valeur existe dans le dictionnaire avec :
var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true
Parcourir un dictionnaire énumère ses paires clé/valeur. Les dictionnaires possèdent aussi des propriétés qui permettent de parcourir ses clés ou ses valeurs.
Dans cet exercice, tu vas écrire du code pour garder la trace des indicatifs téléphoniques internationaux grâce à un dictionnaire d'indicatifs téléphoniques.
Le dictionnaire utilise un entier pour ses clés (l'indicatif téléphonique) et une string (le nom du pays) pour ses valeurs.
Tu as 9 tâches à réaliser, qui reposent toutes sur la classe statique DialingCodes.
Implémente la méthode (statique) DialingCodes.GetEmptyDictionary() qui renvoie un dictionnaire vide.
DialingCodes.GetEmptyDictionary();
// => empty dictionary
Il existe un dictionnaire pré-rempli qui contient les 3 indicatifs téléphoniques suivants : "United States of America", dont l'indicatif est 1, "Brazil", dont l'indicatif est 55, et "India", dont l'indicatif est 91. Implémente la méthode (statique) DialingCodes.GetExistingDictionary() pour renvoyer ce dictionnaire pré-rempli :
DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"
Implémente la méthode (statique) DialingCodes.AddCountryToEmptyDictionary() qui crée un dictionnaire et y ajoute un indicatif téléphonique et le nom du pays associé.
DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"
Implémente la méthode (statique) DialingCodes.AddCountryToExistingDictionary() qui ajoute un indicatif téléphonique et le nom du pays associé à un dictionnaire non vide.
DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"
Implémente la méthode (statique) DialingCodes.GetCountryNameFromDictionary() qui prend un indicatif téléphonique et renvoie le nom du pays correspondant. Si l'indicatif ne figure pas dans le dictionnaire, une string vide est renvoyée.
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"
DialingCodes.GetCountryNameFromDictionary(
DialingCodes.GetExistingDictionary(), 999);
// => string.Empty
Implémente la méthode (statique) DialingCodes.CheckCodeExists() pour vérifier si un indicatif téléphonique existe dans le dictionnaire.
DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true
Implémente la méthode (statique) DialingCodes.UpdateDictionary() qui prend un indicatif téléphonique et remplace le nom du pays correspondant dans le dictionnaire par le nom du pays passé en paramètre. Si l'indicatif n'existe pas dans le dictionnaire, celui-ci reste inchangé.
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"
Implémente la méthode (statique) DialingCodes.RemoveCountryFromDictionary() qui prend un indicatif téléphonique et supprime du dictionnaire l'enregistrement correspondant, à savoir l'indicatif et le nom du pays.
DialingCodes.RemoveCountryFromDictionary(
DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"
Implémente la méthode (statique) DialingCodes.FindLongestCountryName() qui renvoie le nom du pays au nom le plus long parmi ceux stockés dans le dictionnaire.
DialingCodes.FindLongestCountryName(
DialingCodes.GetExistingDictionary());
// => "United States of America"
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.