Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Temperature Sensor Adapter

Adapt readings from Fahrenheit, Kelvin and Celsius sensors to one Celsius interface.

Das lernst du

  • Wrap different formats behind one interface
  • Convert Fahrenheit and Kelvin to Celsius
  • Parse a unit prefix and a value

Problem

Übersetzung anzeigen

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.

Einschränkungen

1 ≤ number of readings ≤ 1,000

−1,000 ≤ value ≤ 1,000

Beispiele

Beispiel 1
Eingabe:
readings = ["C:21.5", "F:212", "K:273.15"]

Erwartete Ausgabe:
expected = [21.5, 100.0, 0.0]
Eingabe:
std::vector<std::string> readings = {"C:21.5", "F:212", "K:273.15"};

Erwartete Ausgabe:
std::vector<double> expected = {21.5, 100.0, 0.0};
Eingabe:
string[] readings = new string[] {"C:21.5", "F:212", "K:273.15"};

Erwartete Ausgabe:
double[] expected = new double[] {21.5, 100.0, 0.0};

Erläuterung

21.5 °C stays; 212 °F is (212 − 32) × 5 / 9 = 100 °C; 273.15 K is 0 °C.

Beispiel 2
Eingabe:
readings = ["F:-40"]

Erwartete Ausgabe:
expected = [-40.0]
Eingabe:
std::vector<std::string> readings = {"F:-40"};

Erwartete Ausgabe:
std::vector<double> expected = {-40.0};
Eingabe:
string[] readings = new string[] {"F:-40"};

Erwartete Ausgabe:
double[] expected = new double[] {-40.0};

Erläuterung

−40 is the same in both scales: (−40 − 32) × 5 / 9 = −40.

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

The letter before the colon tells you the unit.

Hinweis 2

Convert every reading to Celsius with its own formula.

Hinweis 3

Parse the number after the colon as a decimal, including negative values.

Erwartete Komplexität

O(number of readings) time, O(number of readings) extra space

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.