Parcours
/
C#
C#
/
Exercices
/
Analyse de numéros de téléphone
Analyse de numéros de téléphone

Analyse de numéros de téléphone

Exercice d'apprentissage

Introduction

Tuples

En C#, un tuple est une structure de données qui organise des données et qui contient au moins deux champs de n'importe quel type.

On crée généralement un tuple en plaçant deux expressions ou plus, séparées par des virgules, entre parenthèses.

string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);

Un tuple peut servir dans les opérations d'affectation et d'initialisation, comme valeur de retour ou comme argument de méthode.

On accède aux champs avec la syntaxe point. Par défaut, le premier champ est Item1, le deuxième Item2, etc. Les noms autres que ceux par défaut sont abordés plus bas.

// initialization
(int, int, int) vertices = (90, 45, 45);

// assignment
vertices = (60, 60, 60);

//  return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
    return (num1 == num2, num1 > num2 ? num1 : num2);
}

// method argument
int Add((int, int) operands)
{
    return operands.Item1 + operands.Item2;
}

Des noms de champs comme Item1 ne rendent pas le code très lisible. Le code ci-dessous montre deux façons de nommer les champs d'un tuple. Remarque aussi, dans ce code, que var peut s'utiliser avec les tuples et que le type est alors inféré. Cela fonctionne aussi bien pour les tuples dont les champs sont nommés que pour ceux dont les champs ne le sont pas.

// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;

// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;

Instructions

Dans cet exercice, tu vas analyser des numéros de téléphone.

Tu dois implémenter 2 fonctionnalités.

Les numéros de téléphone transmis aux routines sont garantis être de la forme NNN-NNN-NNNN, par exemple 212-515-9876, et ne jamais être nuls.

1. Analyse un numéro de téléphone

Ton analyse doit renvoyer 3 informations :

  1. Une indication précisant si le numéro possède un indicatif téléphonique de New York, c'est-à-dire 212 comme 3 premiers chiffres
  2. Une indication précisant si le numéro est factice, avec 555 comme préfixe aux positions 5 à 7 (en numérotant à partir de 1)
  3. Les 4 derniers chiffres du numéro.

Implémente la méthode (statique) PhoneNumber.Analyze() pour produire les informations sur le numéro de téléphone.

PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")

2. Détecte si un numéro de téléphone a un préfixe factice (555)

Implémente la méthode (statique) PhoneNumber.IsFake() pour détecter si le numéro de téléphone est factice, en utilisant les informations produites dans la tâche 1.

PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
C# Exercism

Prêt à commencer Analyse de numéros de téléphone ?

Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.