Torna alle sfide
Facile 0 risolte 0% di accettazione

Adattatore per sensori di temperatura

Adatta letture da sensori Fahrenheit, Kelvin e Celsius a una sola interfaccia Celsius.

Cosa imparerai

  • Avvolgere formati diversi dietro un'unica interfaccia
  • Convertire Fahrenheit e Kelvin in Celsius
  • Leggere un prefisso di unità e un valore

Problema

Il pattern adapter permette al codice che si aspetta una certa interfaccia di funzionare con oggetti che ne forniscono un’altra. Qui, una dashboard capisce solo i gradi Celsius, ma i sensori riportano valori in unità diverse.

Ogni lettura è una lettera di unità, due punti e un valore:

  • C:<value>: già in Celsius.
  • F:<value>: Fahrenheit, convertito con (F − 32) × 5 / 9.
  • K:<value>: Kelvin, convertito con K − 273.15.

Implementa sensor_adapter(readings).

Input

readings: Le letture grezze dei sensori.

Output

Restituisci ogni lettura in Celsius, nell’ordine. Sono accettati risultati entro 1e-6.

Vincoli

1 ≤ numero di letture ≤ 1,000

−1,000 ≤ valore ≤ 1,000

Esempi

Esempio 1
Input:
readings = ["C:21.5", "F:212", "K:273.15"]

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

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

Output atteso:
double[] expected = new double[] {21.5, 100.0, 0.0};

Spiegazione

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

Esempio 2
Input:
readings = ["F:-40"]

Output atteso:
expected = [-40.0]
Input:
std::vector<std::string> readings = {"F:-40"};

Output atteso:
std::vector<double> expected = {-40.0};
Input:
string[] readings = new string[] {"F:-40"};

Output atteso:
double[] expected = new double[] {-40.0};

Spiegazione

−40 è lo stesso in entrambe le scale: (−40 − 32) × 5 / 9 = −40.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

La lettera prima dei due punti indica l'unità.

Suggerimento 2

Converti ogni lettura in Celsius con la sua formula.

Suggerimento 3

Leggi il numero dopo i due punti come decimale, compresi i valori negativi.

Complessità attesa

tempo O(numero di letture), spazio aggiuntivo O(numero di letture)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.