Problème
Le modèle factory method masque la façon dont les objets sont créés : vous demandez à la fabrique une forme par son nom et vous recevez un objet qui sait calculer sa propre aire.
Chaque description est un nom de forme suivi de ses nombres, séparés par des espaces :
circle r: area π·r²square s: area s²rectangle w h: area w·htriangle b h: area b·h / 2
Implémentez shape_factory_areas(shapes).
Entrée
shapes: Les descriptions. Les nombres peuvent avoir des décimales.
Sortie
Retournez l'aire de chaque forme, dans l'ordre. Les réponses dans une tolérance de 1e-6 sont acceptées.
Contraintes
1 ≤ nombre de formes ≤ 1,000
0 < chaque nombre ≤ 1,000
Exemples
Entrée :
shapes = ["square 3", "rectangle 2 5", "triangle 4 3"]
Sortie attendue :
expected = [9.0, 10.0, 6.0]
Entrée :
std::vector<std::string> shapes = {"square 3", "rectangle 2 5", "triangle 4 3"};
Sortie attendue :
std::vector<double> expected = {9.0, 10.0, 6.0};
Entrée :
string[] shapes = new string[] {"square 3", "rectangle 2 5", "triangle 4 3"};
Sortie attendue :
double[] expected = new double[] {9.0, 10.0, 6.0};
Explication
3² = 9, 2·5 = 10 et 4·3/2 = 6.
Entrée :
shapes = ["circle 1"]
Sortie attendue :
expected = [3.141592653589793]
Entrée :
std::vector<std::string> shapes = {"circle 1"};
Sortie attendue :
std::vector<double> expected = {3.141592653589793};
Entrée :
string[] shapes = new string[] {"circle 1"};
Sortie attendue :
double[] expected = new double[] {3.141592653589793};
Explication
π·1² = π ≈ 3.141593.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Lisez le premier mot pour savoir quelle forme construire.
Indice 2
Associez chaque nom de forme à sa formule d'aire.
Indice 3
Utilisez π de la bibliothèque mathématique de votre langage et gardez toute la précision.
Complexité attendue
temps O(nombre de formes), espace supplémentaire O(nombre de formes)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.