Problem
Das adapter-Muster lässt Code, der eine Schnittstelle erwartet, mit Objekten arbeiten, die eine andere bereitstellen. Hier versteht ein Dashboard nur Grad Celsius, aber die Sensoren melden in unterschiedlichen Einheiten.
Jeder Messwert ist ein Einheitsbuchstabe, ein Doppelpunkt und ein Wert:
C:<value>: bereits Celsius.F:<value>: Fahrenheit, umgerechnet mit (F − 32) × 5 / 9.K:<value>: Kelvin, umgerechnet mit K − 273.15.
Implementiere sensor_adapter(readings).
Eingabe
readings: Die rohen Sensorwerte.
Ausgabe
Gib jeden Messwert in Celsius zurück, in der gleichen Reihenfolge. Antworten innerhalb von 1e-6 werden akzeptiert.
Einschränkungen
1 ≤ Anzahl der Messwerte ≤ 1,000
−1,000 ≤ Wert ≤ 1,000
Beispiele
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 bleibt so; 212 °F ist (212 − 32) × 5 / 9 = 100 °C; 273.15 K ist 0 °C.
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 ist in beiden Skalen gleich: (−40 − 32) × 5 / 9 = −40.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Der Buchstabe vor dem Doppelpunkt nennt die Einheit.
Hinweis 2
Rechne jeden Messwert mit seiner eigenen Formel in Celsius um.
Hinweis 3
Lies die Zahl nach dem Doppelpunkt als Dezimalzahl, auch negative Werte.
Erwartete Komplexität
Zeit O(Anzahl der Messwerte), zusätzlicher Speicher O(Anzahl der Messwerte)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.