Условие
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. Следуйте условию и ограничениям выше.