Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Adapter für Temperatursensoren

Passe Messwerte von Fahrenheit-, Kelvin- und Celsius-Sensoren an eine gemeinsame Celsius-Schnittstelle an.

Das lernst du

  • Verschiedene Formate hinter einer Schnittstelle verpacken
  • Fahrenheit und Kelvin in Celsius umrechnen
  • Einheitenpräfix und Wert auslesen

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

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 bleibt so; 212 °F ist (212 − 32) × 5 / 9 = 100 °C; 273.15 K ist 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 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.

Von anderen lernen

Community-Lösungen

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