К списку задач
Легко Решено: 0 Процент решений: 0%

Адаптер датчиков температуры

Приведите показания датчиков Fahrenheit, Kelvin и Celsius к одному интерфейсу Celsius.

Чему вы научитесь

  • Прятать разные форматы за одним интерфейсом
  • Переводить Фаренгейт и Кельвин в Цельсий
  • Разбирать префикс единицы и значение

Условие

Паттерн adapter позволяет коду, ожидающему один интерфейс, работать с объектами, которые дают другой. Здесь панель понимает только градусы Цельсия, а датчики сообщают в разных единицах.

Каждое показание — это буква единицы, двоеточие и значение:

  • C:<value>: уже по Цельсию.
  • F:<value>: по Фаренгейту, переводится как (F − 32) × 5 / 9.
  • K:<value>: в кельвинах, переводится как K − 273.15.

Реализуйте sensor_adapter(readings).

Входные данные

readings: исходные показания датчиков.

Выходные данные

Верните каждое показание в градусах Цельсия, по порядку. Ответы с погрешностью до 1e-6 принимаются.

Ограничения

1 ≤ число показаний ≤ 1,000

−1,000 ≤ значение ≤ 1,000

Примеры

Пример 1
Ввод:
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 остаётся; 212 °F — это (212 − 32) × 5 / 9 = 100 °C; 273.15 K — это 0 °C.

Пример 2
Ввод:
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 одинаково в обеих шкалах: (−40 − 32) × 5 / 9 = −40.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Буква перед двоеточием обозначает единицу.

Подсказка 2

Переведите каждое показание в Цельсий своей формулой.

Подсказка 3

Читайте число после двоеточия как дробное, включая отрицательные.

Ожидаемая сложность

время O(число показаний), доп. память O(число показаний)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.