-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconvertTemperature.js
More file actions
86 lines (80 loc) · 3.14 KB
/
convertTemperature.js
File metadata and controls
86 lines (80 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
В офисе международного банка решили внедрить “умный офис”.
Система получает на вход температуру в определенной шкале, а также ту шкалу,
в которой нужно показать температуру на экране.
Напишите конвертер температурных шкал.
Справочник:
"C" - Celsius
"F" - Fahrenheit
"K" - Kelvin
"R" - Rankine
"De" - Delisle
"N" - Newton
"Re" - Réaumur
"Ro" - Rømer
Правила конвертации по ссылке https://clck.ru/32RkT5
Пример:
convertTemperature(100, "C", "F"); // вернет 212
*/
/**
* Конвертирует температуру из одной шкалы в другую
* @param {number} temperature - температура
* @param {string} from - шкала, в которой задана температура
* @param {string} to - шкала, в которую нужно перевести температуру
* @returns {number} - температура в новой шкале
* @example convertTemperature(100, "C", "F"); // вернет 212
*/
const convertTemperature = (temperature, from, to) => {
const convert = {
C: {
F: (t) => t * 9 / 5 + 32,
K: (t) => t + 273.15,
R: (t) => (t + 273.15) * 9 / 5,
De: (t) => (100 - t) * 3 / 2,
N: (t) => t * 33 / 100,
Re: (t) => t * 4 / 5,
Ro: (t) => t * 21 / 40 + 7.5,
},
F: {
C: (t) => (t - 32) * 5 / 9,
K: (t) => (t - 32) * 5 / 9 + 273.15,
R: (t) => t + 459.67,
De: (t) => (212 - t) * 5 / 6,
N: (t) => (t - 32) * 11 / 60,
Re: (t) => (t - 32) * 4 / 9,
Ro: (t) => (t - 32) * 7 / 24 + 7.5,
},
K: {
C: (t) => t - 273.15,
F: (t) => (t - 273.15) * 9 / 5 + 32,
R: (t) => t * 9 / 5,
De: (t) => (373.15 - t) * 3 / 2,
N: (t) => (t - 273.15) * 33 / 100,
Re: (t) => (t - 273.15) * 4 / 5,
Ro: (t) => (t - 273.15) * 21 / 40 + 7.5,
},
R: {
C: (t) => (t - 491.67) * 5 / 9,
F: (t) => t - 459.67,
K: (t) => t * 5 / 9,
De: (t) => (671 - t) * 5 / 6,
N: (t) => (t - 491.67) * 11 / 60,
Re: (t) => (t - 491.67) * 4 / 9,
Ro: (t) => (t - 491.67) * 7 / 24 + 7.5,
},
De: {
C: (t) => 100 - t * 2 / 3,
F: (t) => 212 - t * 6 / 5,
K: (t) => 373.15 - t * 2 / 3,
R: (t) => 671 - t * 6 / 5,
N: (t) => 33 - t * 11 / 50,
Re: (t) => 80 - t * 8 / 15,
Ro: (t) => 60 - t * 10 / 21,
}
};
return convert[from][to](temperature);
}
// Локальные тесты
console.log(convertTemperature(100, "C", "F")); // вернет 212
console.log(convertTemperature(100, "C", "K")); // вернет 373.15
console.log(convertTemperature(100, "C", "R")); // вернет 671.67