समस्या
The adapter pattern lets code that expects one interface work with objects that provide another. Here, a dashboard only understands degrees Celsius, but the sensors report in different units.
Each reading is a unit letter, a colon and a value:
C:<value>: already Celsius.F:<value>: Fahrenheit, converted with (F − 32) × 5 / 9.K:<value>: Kelvin, converted with K − 273.15.
Implement sensor_adapter(readings).
Input
readings: The raw sensor readings.
Output
Return every reading in Celsius, in order. Answers within 1e-6 are accepted.
सीमाएँ
1 ≤ number of readings ≤ 1,000
−1,000 ≤ value ≤ 1,000
उदाहरण
इनपुट:
readings = ["C:21.5", "F:212", "K:273.15"]
अपेक्षित आउटपुट:
expected = [21.5, 100.0, 0.0]
इनपुट:
std::vector<std::string> readings = {"C:21.5", "F:212", "K:273.15"};
अपेक्षित आउटपुट:
std::vector<double> expected = {21.5, 100.0, 0.0};
इनपुट:
string[] readings = new string[] {"C:21.5", "F:212", "K:273.15"};
अपेक्षित आउटपुट:
double[] expected = new double[] {21.5, 100.0, 0.0};
व्याख्या
21.5 °C stays; 212 °F is (212 − 32) × 5 / 9 = 100 °C; 273.15 K is 0 °C.
इनपुट:
readings = ["F:-40"]
अपेक्षित आउटपुट:
expected = [-40.0]
इनपुट:
std::vector<std::string> readings = {"F:-40"};
अपेक्षित आउटपुट:
std::vector<double> expected = {-40.0};
इनपुट:
string[] readings = new string[] {"F:-40"};
अपेक्षित आउटपुट:
double[] expected = new double[] {-40.0};
व्याख्या
−40 is the same in both scales: (−40 − 32) × 5 / 9 = −40.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
The letter before the colon tells you the unit.
संकेत 2
Convert every reading to Celsius with its own formula.
संकेत 3
Parse the number after the colon as a decimal, including negative values.
अपेक्षित जटिलता
O(number of readings) time, O(number of readings) extra space
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।