Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Temperature Sensor Adapter

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

Bạn sẽ học được gì

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

Đề bài

Xem bản dịch

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.

Ràng buộc

1 ≤ number of readings ≤ 1,000

−1,000 ≤ value ≤ 1,000

Ví dụ

Ví dụ 1
Đầu vào:
readings = ["C:21.5", "F:212", "K:273.15"]

Kết quả mong đợi:
expected = [21.5, 100.0, 0.0]
Đầu vào:
std::vector<std::string> readings = {"C:21.5", "F:212", "K:273.15"};

Kết quả mong đợi:
std::vector<double> expected = {21.5, 100.0, 0.0};
Đầu vào:
string[] readings = new string[] {"C:21.5", "F:212", "K:273.15"};

Kết quả mong đợi:
double[] expected = new double[] {21.5, 100.0, 0.0};

Giải thích

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

Ví dụ 2
Đầu vào:
readings = ["F:-40"]

Kết quả mong đợi:
expected = [-40.0]
Đầu vào:
std::vector<std::string> readings = {"F:-40"};

Kết quả mong đợi:
std::vector<double> expected = {-40.0};
Đầu vào:
string[] readings = new string[] {"F:-40"};

Kết quả mong đợi:
double[] expected = new double[] {-40.0};

Giải thích

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

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

The letter before the colon tells you the unit.

Gợi ý 2

Convert every reading to Celsius with its own formula.

Gợi ý 3

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

Độ phức tạp mong đợi

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

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.