Tất cả thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Bộ chuyển đổi cảm biến nhiệt độ

Chuyển đổi các giá trị đọc từ cảm biến Fahrenheit, Kelvin và Celsius sang một giao diện Celsius duy nhất.

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

  • Bọc các định dạng khác nhau sau một giao diện
  • Đổi Fahrenheit và Kelvin sang Celsius
  • Tách tiền tố đơn vị và giá trị

Đề bài

Xem bản gốc (English)

Mẫu adapter cho phép mã nguồn mong đợi một giao diện có thể làm việc với các đối tượng cung cấp giao diện khác. Ở đây, một bảng điều khiển chỉ hiểu độ C, nhưng các cảm biến lại báo cáo theo những đơn vị khác nhau.

Mỗi giá trị đọc là một chữ cái đơn vị, dấu hai chấm và một giá trị:

  • C:<value>: đã là Celsius.
  • F:<value>: Fahrenheit, được chuyển đổi bằng (F − 32) × 5 / 9.
  • K:<value>: Kelvin, được chuyển đổi bằng K − 273.15.

Cài đặt sensor_adapter(readings).

Input

readings: Các giá trị đọc thô từ cảm biến.

Output

Trả về mọi giá trị đọc theo Celsius, theo đúng thứ tự. Chấp nhận đáp án sai số trong phạm vi 1e-6.

Ràng buộc

1 ≤ số lần đo ≤ 1,000

−1,000 ≤ giá trị ≤ 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 giữ nguyên; 212 °F là (212 − 32) × 5 / 9 = 100 °C; 273.15 K là 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 là như nhau ở cả hai thang đo: (−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

Chữ cái trước dấu hai chấm cho biết đơn vị.

Gợi ý 2

Đổi mỗi số đo sang Celsius bằng công thức riêng.

Gợi ý 3

Đọc số sau dấu hai chấm như số thập phân, kể cả số âm.

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

thời gian O(số lần đo), bộ nhớ phụ O(số lần đo)

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.