-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplus-minus.ts
47 lines (45 loc) · 1.36 KB
/
plus-minus.ts
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
export type Input = number[];
export type Output = string;
/**
* Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero.
* Print the decimal value of each fraction on a new line with 6 places after the decimal.
*
* Note:
* - This challenge introduces precision problems.
* - The test cases are scaled to six decimal places, though answers with absolute error of up to 10^-4 are acceptable.
*
* Output Format:
* - Print the following lines, each to decimals:
* - 1) proportion of positive values
* - 2) proportion of negative values
* - 3) proportion of zeros
*
* Example:
* - inputArray = [1, 1, 0, -1, -1]
* - There are n = 5 elements, two positive, two negative and one zero.
* - Their ratios are 2/5 = 0.400000, 2/5 = 0.400000 and 1/5 = 0.200000.
* - Results are printed as:
* - 0.400000
* - 0.400000
* - 0.200000
*
* @param inputArray
*/
export const plusMinus = (inputArray: Input): Output => {
return inputArray
.reduce(
(acc, value) => {
let [positives, negatives, zeros] = acc;
return [
value > 0 ? ++positives : positives,
value < 0 ? ++negatives : negatives,
value === 0 ? ++zeros : zeros,
];
},
[0, 0, 0]
)
.reduce(
(acc, value) => acc + `${(value / inputArray.length).toFixed(6)}\n`,
""
);
};