समस्या
factory method pattern यह छिपाता है कि objects कैसे बनाए जाते हैं: आप factory से नाम के आधार पर एक shape माँगते हैं और एक ऐसा object पाते हैं जो अपना area स्वयं compute करना जानता है.
हर description एक shape name होता है जिसके बाद उसके numbers आते हैं, spaces से अलग किए गए:
circle r: area π·r²square s: area s²rectangle w h: area w·htriangle b h: area b·h / 2
Implement shape_factory_areas(shapes).
इनपुट
shapes: descriptions. Numbers में decimals हो सकते हैं.
आउटपुट
हर shape का area क्रम में लौटाएँ. 1e-6 के भीतर के answers स्वीकार किए जाते हैं.
सीमाएँ
1 ≤ आकृतियों की संख्या ≤ 1,000
0 < हर संख्या ≤ 1,000
उदाहरण
इनपुट:
shapes = ["square 3", "rectangle 2 5", "triangle 4 3"]
अपेक्षित आउटपुट:
expected = [9.0, 10.0, 6.0]
इनपुट:
std::vector<std::string> shapes = {"square 3", "rectangle 2 5", "triangle 4 3"};
अपेक्षित आउटपुट:
std::vector<double> expected = {9.0, 10.0, 6.0};
इनपुट:
string[] shapes = new string[] {"square 3", "rectangle 2 5", "triangle 4 3"};
अपेक्षित आउटपुट:
double[] expected = new double[] {9.0, 10.0, 6.0};
व्याख्या
3² = 9, 2·5 = 10 और 4·3/2 = 6.
इनपुट:
shapes = ["circle 1"]
अपेक्षित आउटपुट:
expected = [3.141592653589793]
इनपुट:
std::vector<std::string> shapes = {"circle 1"};
अपेक्षित आउटपुट:
std::vector<double> expected = {3.141592653589793};
इनपुट:
string[] shapes = new string[] {"circle 1"};
अपेक्षित आउटपुट:
double[] expected = new double[] {3.141592653589793};
व्याख्या
π·1² = π ≈ 3.141593.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
पहला शब्द पढ़कर जानें कि कौन-सी आकृति बनानी है।
संकेत 2
हर आकृति के नाम को उसके क्षेत्रफल के सूत्र से जोड़ें।
संकेत 3
अपनी भाषा की गणित लाइब्रेरी का π इस्तेमाल करें और पूरी सटीकता रखें।
अपेक्षित जटिलता
समय O(आकृतियों की संख्या), अतिरिक्त स्थान O(आकृतियों की संख्या)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।