ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

Temperature Sensor Adapter

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

สิ่งที่คุณจะได้เรียนรู้

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

โจทย์

ดูฉบับแปล

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.

เงื่อนไข

1 ≤ number of readings ≤ 1,000

−1,000 ≤ value ≤ 1,000

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
readings = ["C:21.5", "F:212", "K:273.15"]

ผลลัพธ์ที่คาดหวัง:
expected = [21.5, 100.0, 0.0]
อินพุต:
std::vector<std::string> readings = {"C:21.5", "F:212", "K:273.15"};

ผลลัพธ์ที่คาดหวัง:
std::vector<double> expected = {21.5, 100.0, 0.0};
อินพุต:
string[] readings = new string[] {"C:21.5", "F:212", "K:273.15"};

ผลลัพธ์ที่คาดหวัง:
double[] expected = new double[] {21.5, 100.0, 0.0};

คำอธิบาย

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

ตัวอย่างที่ 2
อินพุต:
readings = ["F:-40"]

ผลลัพธ์ที่คาดหวัง:
expected = [-40.0]
อินพุต:
std::vector<std::string> readings = {"F:-40"};

ผลลัพธ์ที่คาดหวัง:
std::vector<double> expected = {-40.0};
อินพุต:
string[] readings = new string[] {"F:-40"};

ผลลัพธ์ที่คาดหวัง:
double[] expected = new double[] {-40.0};

คำอธิบาย

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

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

The letter before the colon tells you the unit.

คำใบ้ 2

Convert every reading to Celsius with its own formula.

คำใบ้ 3

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

ความซับซ้อนที่คาดหวัง

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

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก