-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
161 lines (124 loc) · 4.23 KB
/
script.js
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
// Remember, we're gonna use strict mode in all scripts now!
'use strict';
/*
///////////////////////////////////////
// Using Google, StackOverflow and MDN
// PROBLEM 1:
// We work for a company building a smart home thermometer. Our most recent task is this: "Given an array of temperatures of one day, calculate the temperature amplitude. Keep in mind that sometimes there might be a sensor error."
const temperatures = [3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5];
// 1) Understanding the problem
// - What is temp amplitude? Answer: difference between highest and lowest temp
// - How to compute max and min temperatures?
// - What's a sensor error? And what do do?
// 2) Breaking up into sub-problems
// - How to ignore errors?
// - Find max value in temp array
// - Find min value in temp array
// - Subtract min from max (amplitude) and return it
const calcTempAmplitude = function (temps) {
let max = temps[0];
let min = temps[0];
for (let i = 0; i < temps.length; i++) {
const curTemp = temps[i];
if (typeof curTemp !== 'number') continue;
if (curTemp > max) max = curTemp;
if (curTemp < min) min = curTemp;
}
console.log(max, min);
return max - min;
};
const amplitude = calcTempAmplitude(temperatures);
console.log(amplitude);
// PROBLEM 2:
// Function should now receive 2 arrays of temps
// 1) Understanding the problem
// - With 2 arrays, should we implement functionality twice? NO! Just merge two arrays
// 2) Breaking up into sub-problems
// - Merge 2 arrays
const calcTempAmplitudeNew = function (t1, t2) {
const temps = t1.concat(t2);
console.log(temps);
let max = temps[0];
let min = temps[0];
for (let i = 0; i < temps.length; i++) {
const curTemp = temps[i];
if (typeof curTemp !== 'number') continue;
if (curTemp > max) max = curTemp;
if (curTemp < min) min = curTemp;
}
console.log(max, min);
return max - min;
};
const amplitudeNew = calcTempAmplitudeNew([3, 5, 1], [9, 0, 5]);
console.log(amplitudeNew);
///////////////////////////////////////
// Debugging with the Console and Breakpoints
const measureKelvin = function () {
const measurement = {
type: 'temp',
unit: 'celsius',
// C) FIX
// value: Number(prompt('Degrees celsius:')),
value: 10,
};
// B) FIND
console.table(measurement);
// console.log(measurement.value);
// console.warn(measurement.value);
// console.error(measurement.value);
const kelvin = measurement.value + 273;
return kelvin;
};
// A) IDENTIFY
console.log(measureKelvin());
// Using a debugger
const calcTempAmplitudeBug = function (t1, t2) {
const temps = t1.concat(t2);
console.log(temps);
let max = 0;
let min = 0;
for (let i = 0; i < temps.length; i++) {
const curTemp = temps[i];
if (typeof curTemp !== 'number') continue;
if (curTemp > max) max = curTemp;
if (curTemp < min) min = curTemp;
}
console.log(max, min);
return max - min;
};
const amplitudeBug = calcTempAmplitudeBug([3, 5, 1], [9, 4, 5]);
// A) IDENTIFY
console.log(amplitudeBug);
*/
///////////////////////////////////////
// Coding Challenge #1
/*
Given an array of forecasted maximum temperatures, the thermometer displays a string with these temperatures.
Example: [17, 21, 23] will print "... 17ºC in 1 days ... 21ºC in 2 days ... 23ºC in 3 days ..."
Create a function 'printForecast' which takes in an array 'arr' and logs a string like the above to the console.
Use the problem-solving framework: Understand the problem and break it up into sub-problems!
TEST DATA 1: [17, 21, 23]
TEST DATA 2: [12, 5, -5, 0, 4]
*/
/*
// 1) Understanding the problem
// - Array transformed to string, separated by ...
// - What is the X days? Answer: index + 1
// 2) Breaking up into sub-problems
// - Transform array into string
// - Transform each element to string with ºC
// - Strings needs to contain day (index + 1)
// - Add ... between elements and start and end of string
// - Log string to console
const data1 = [17, 21, 23];
const data2 = [12, 5, -5, 0, 4];
console.log(`... ${data1[0]}ºC ... ${data1[1]}ºC ... ${data1[2]}ºC ...`);
const printForecast = function (arr) {
let str = '';
for (let i = 0; i < arr.length; i++) {
str += `${arr[i]}ºC in ${i + 1} days ... `;
}
console.log('...' + str);
};
printForecast(data1);
*/