Retour aux défis
Facile 0 résolus 0 % de réussite

Fabrique de formes

Créer des formes à partir de descriptions textuelles avec une fabrique et retourner l'aire de chacune.

Ce que vous allez apprendre

  • Créer des objets à partir d'une description textuelle
  • Cacher la construction derrière une fonction
  • Laisser chaque forme calculer sa propre aire

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·h
  • triangle 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

Exemple 1
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.

Exemple 2
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.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.