Problem
Das factory method-Muster verbirgt, wie Objekte erzeugt werden: Du fragst die Factory nach einer Form per Name und erhältst ein Objekt, das seine eigene Fläche berechnen kann.
Jede Beschreibung ist ein Formenname, gefolgt von seinen Zahlen, getrennt durch Leerzeichen:
circle r: area π·r²square s: area s²rectangle w h: area w·htriangle b h: area b·h / 2
Implementiere shape_factory_areas(shapes).
Input
shapes: Die Beschreibungen. Zahlen dürfen Dezimalstellen haben.
Output
Gib die Fläche jeder Form in Reihenfolge zurück. Antworten innerhalb von 1e-6 werden akzeptiert.
Einschränkungen
1 ≤ Anzahl der Formen ≤ 1,000
0 < jede Zahl ≤ 1,000
Beispiele
Eingabe:
shapes = ["square 3", "rectangle 2 5", "triangle 4 3"]
Erwartete Ausgabe:
expected = [9.0, 10.0, 6.0]
Eingabe:
std::vector<std::string> shapes = {"square 3", "rectangle 2 5", "triangle 4 3"};
Erwartete Ausgabe:
std::vector<double> expected = {9.0, 10.0, 6.0};
Eingabe:
string[] shapes = new string[] {"square 3", "rectangle 2 5", "triangle 4 3"};
Erwartete Ausgabe:
double[] expected = new double[] {9.0, 10.0, 6.0};
Erläuterung
3² = 9, 2·5 = 10 und 4·3/2 = 6.
Eingabe:
shapes = ["circle 1"]
Erwartete Ausgabe:
expected = [3.141592653589793]
Eingabe:
std::vector<std::string> shapes = {"circle 1"};
Erwartete Ausgabe:
std::vector<double> expected = {3.141592653589793};
Eingabe:
string[] shapes = new string[] {"circle 1"};
Erwartete Ausgabe:
double[] expected = new double[] {3.141592653589793};
Erläuterung
π·1² = π ≈ 3.141593.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Lies das erste Wort, um zu wissen, welche Form du baust.
Hinweis 2
Ordne jedem Formnamen seine Flächenformel zu.
Hinweis 3
Nutze π aus der Mathe-Bibliothek deiner Sprache und behalte die volle Genauigkeit.
Erwartete Komplexität
Zeit O(Anzahl der Formen), zusätzlicher Speicher O(Anzahl der Formen)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.