Problem Statement
A web site for movie fans assigns a composite rating to each movie. Your task is to calculate the rating of a particular movie. Users of the site rate the movie on a scale of 0 to 100, inclusive. The lowCount lowest ratings and the highCount highest ratings are thrown away, and the composite rating is the average of the remaining individual ratings.
Given the user ratings in a
Definition
- Class:
- MovieRating
- Method:
- calculate
- Parameters:
- int[], int, int
- Returns:
- double
- Method signature:
- double calculate(int[] marks, int lowCount, int highCount)
- (be sure your method is public)
Notes
- A return value with either an absolute or relative error of less than 1.0E-9 is considered correct.
Constraints
- marks will contain between 1 and 50 elements, inclusive.
- Each element of marks will be between 0 and 100, inclusive.
- lowCount and highCount will be between 0 and 50, inclusive.
- lowCount+highCount will be strictly less than the number of elements in marks.
Examples
{70, 99, 96, 0, 30}
0
0
Returns: 59.0
With no individual ratings thrown away we should return just (70 + 99 + 96 + 0 + 30) / 5 = 295 / 5 = 59.
{91, 90, 50}
1
1
Returns: 90.0
Here the lowest rating (50) and the highest rating (91) are thrown away, so only one individual rating (90) is left.
{23, 23, 23, 23, 23, 23, 23, 23}
2
3
Returns: 23.0
There can be repeats in marks.
{31, 52, 20, 86, 47, 76, 82, 27, 42, 29}
1
4
Returns: 35.2
{1, 1, 0, 0, 1, 1, 0, 1, 0, 2}
2
2
Returns: 0.6666666666666666
{0}
0
0
Returns: 0.0
{100}
0
0
Returns: 100.0
{47, 90}
0
0
Returns: 68.5
{0, 0}
0
1
Returns: 0.0
{100, 100}
1
0
Returns: 100.0
{62, 93}
0
1
Returns: 62.0
{92, 14}
0
1
Returns: 14.0
{6, 94}
1
0
Returns: 94.0
{64, 58}
1
0
Returns: 64.0
{89, 17, 42, 49, 8, 6, 20, 8, 28, 28, 23, 65, 88, 98, 95, 31, 80, 69, 71, 18, 62, 99, 70, 68, 27, 37, 53, 97, 36, 36, 64, 61, 52, 32, 97, 89, 38, 87}
9
16
Returns: 42.84615384615385
{76, 2, 46, 99, 75, 76, 35, 99, 49, 15, 42, 36, 45, 86, 95, 28, 48, 32, 17, 18, 20, 23, 22, 79, 49, 39, 38, 11, 64, 33, 14, 1, 98, 5, 69, 25, 95, 37, 65}
15
9
Returns: 49.13333333333333
{35, 79, 0, 39, 6, 90, 82, 19, 69, 33, 23, 62, 56, 75, 46, 77, 61, 30, 34, 49, 26, 76}
2
7
Returns: 39.46153846153846
{22, 64, 61, 33, 2, 73, 60, 41, 48, 33, 71, 75, 24, 32, 61}
7
2
Returns: 60.833333333333336
{100, 52, 1, 85, 100, 49, 20, 77, 15, 89, 72, 40, 58, 11, 71, 40, 100, 75, 71, 34, 58, 98, 16, 98}
1
7
Returns: 47.4375
{84, 21, 54, 78, 31, 73, 27, 12, 34, 43, 88, 65, 57, 56, 21, 86, 79, 25, 32, 32, 55, 29, 19, 66, 1, 49, 100, 96, 57, 41, 87, 88, 13, 36, 96, 80, 96, 34, 64, 24, 28, 35, 44, 3, 79, 49, 93, 3, 24, 12}
0
0
Returns: 49.98
{80, 64, 38, 31, 68, 96, 74, 91, 55, 54, 57, 53, 76, 28, 96, 58, 52, 27, 64, 81, 55, 45, 13, 33, 99, 92, 84, 62, 38, 9, 46, 6, 31, 30, 87, 26, 20, 6, 19, 22, 98, 69, 56, 20, 39, 34, 100, 40, 14, 17}
0
1
Returns: 50.06122448979592
{82, 23, 14, 25, 18, 92, 100, 3, 98, 15, 18, 60, 100, 25, 51, 33, 30, 93, 50, 36, 65, 29, 32, 87, 59, 79, 9, 60, 84, 33, 84, 80, 74, 46, 14, 59, 47, 12, 23, 55, 40, 76, 40, 15, 42, 42, 36, 54, 33, 51}
0
3
Returns: 45.276595744680854
{70, 41, 94, 86, 86, 85, 25, 45, 95, 86, 1, 19, 11, 7, 37, 32, 77, 63, 90, 55, 26, 50, 38, 18, 23, 55, 24, 57, 43, 69, 9, 88, 25, 50, 1, 6, 5, 39, 83, 57, 69, 59, 30, 97, 0, 48, 45, 49, 47, 82}
0
49
Returns: 0.0
{10, 51, 9, 95, 49, 20, 44, 37, 34, 40, 93, 25, 67, 76, 8, 0, 72, 96, 80, 53, 1, 21, 15, 10, 71, 81, 48, 89, 59, 12, 1, 57, 0, 97, 11, 51, 79, 17, 53, 59, 2, 64, 79, 90, 88, 22, 71, 45, 22, 17}
1
0
Returns: 46.755102040816325
{42, 27, 3, 85, 12, 96, 21, 62, 25, 91, 61, 30, 96, 72, 55, 22, 30, 98, 8, 55, 81, 9, 35, 94, 57, 62, 57, 82, 10, 66, 39, 54, 76, 68, 26, 37, 5, 50, 21, 95, 1, 21, 87, 98, 15, 41, 21, 11, 82, 52}
11
0
Returns: 59.69230769230769
{92, 69, 14, 22, 28, 53, 10, 10, 28, 11, 58, 16, 74, 81, 91, 67, 21, 49, 100, 19, 31, 93, 87, 38, 49, 49, 29, 19, 25, 57, 34, 17, 35, 79, 100, 61, 61, 21, 0, 68, 57, 55, 16, 39, 92, 53, 77, 5, 81, 41}
49
0
Returns: 100.0
{62, 77, 47, 0, 21, 25, 84, 100, 94, 50, 52, 32, 31, 90, 6, 29, 8, 17, 28, 31, 54, 12, 75, 78, 77, 54, 63, 40, 70, 23, 37, 76, 62, 72, 51, 61, 34, 7, 99, 14, 65, 61, 59, 31, 66, 76, 37, 71, 62, 28}
8
30
Returns: 30.5
{86, 13, 71, 42, 10, 82, 59, 28, 92, 18, 7, 6, 17, 63, 63, 73, 10, 93, 74, 89, 96, 1, 99, 25, 79, 38, 14, 17, 97, 34, 90, 90, 21, 70, 50, 77, 14, 66, 35, 16, 71, 12, 51, 61, 35, 39, 74, 66, 14, 14}
32
17
Returns: 70.0
{65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}
25
17
Returns: 65.0
{17, 59, 28, 28, 17, 17, 17, 60, 17, 24, 13, 28, 28, 60, 60, 70, 70, 24, 28, 70, 70, 70, 13, 70, 24, 59, 59, 17, 17, 60, 13, 70, 17, 24, 70, 24}
0
33
Returns: 13.0
{57, 56, 55, 54, 56, 57, 55, 55, 54, 49, 51, 55, 49, 52, 53, 52, 49, 53, 52, 55, 54, 54, 53, 55, 53, 49, 52, 56, 57, 55, 50, 52, 49, 52, 56, 50, 52, 54, 50, 53, 52, 52, 51, 57, 53, 51, 49, 52}
0
47
Returns: 49.0
{12, 28, 96, 12, 96, 12, 7, 7, 40, 28, 55, 96}
11
0
Returns: 96.0
{90, 91, 91, 91, 91, 91, 91, 90, 92, 90, 90, 91, 91, 90, 92, 91, 90, 91, 92, 90, 91, 92, 90, 91, 90, 92, 92}
5
20
Returns: 90.0
{90, 90, 89, 92, 91, 89, 89, 92, 90, 88, 89, 92, 91, 92, 89, 91, 91, 90, 88, 89, 90, 90, 88, 89, 91, 89, 92, 89, 89, 89, 91, 88, 90, 92, 89, 91, 92, 89, 91, 90, 90, 88, 89}
5
15
Returns: 89.3913043478261
{35, 90, 41, 56, 35, 56, 77}
2
3
Returns: 48.5
{63, 62, 59, 59, 63, 59, 58, 62, 58, 62, 62}
8
0
Returns: 62.666666666666664
{39, 50, 27, 2, 2, 2, 90, 2, 90, 0, 27, 50, 27, 0, 2, 39, 2, 57, 12, 50, 0, 50, 12, 0, 53, 53, 27, 53, 27}
11
15
Returns: 22.0
{28, 26, 29, 28, 33, 31, 25, 32, 25, 29, 31, 34, 30, 30, 30, 30, 29, 25, 30, 26, 26, 33, 25, 31, 28, 26, 30, 31, 30, 25, 30, 26, 27, 31, 34, 32, 28, 30, 29, 29, 34, 34, 34, 32, 29, 32, 34, 26, 31, 30}
12
12
Returns: 29.692307692307693
{14, 14, 15, 12, 11, 13, 14, 14, 13, 12, 13, 15, 14, 15, 11, 12, 12, 13, 10, 13, 10, 11, 14, 11, 11, 10, 12, 12, 15, 14, 10, 14, 12, 13, 15, 11, 15, 11, 11, 13, 14, 11, 15, 13}
4
18
Returns: 11.863636363636363
{91, 92, 94, 93, 95, 95, 91, 92, 93, 95, 95, 94, 91, 93, 92, 92, 92, 92, 92, 92, 93, 95, 95, 94, 91, 94}
3
6
Returns: 92.6470588235294
{79, 79, 67, 56, 67, 67, 36, 36, 56, 91, 84, 56, 79, 67, 79, 56, 84, 79, 84, 91, 67, 79, 91, 84, 36, 56, 91, 36, 56, 79, 67, 36, 67, 79, 79, 67, 79, 91, 84, 91}
3
9
Returns: 67.92857142857143
{9, 11, 9, 10, 10, 11, 7, 11, 7, 11, 11, 11, 8, 10, 9, 10, 8, 10, 8, 9, 10, 8, 10, 9, 11, 8, 8, 9, 9, 8, 7, 11, 10, 10}
0
0
Returns: 9.352941176470589
{78, 77, 78, 82, 77, 80, 82, 80, 79, 83, 83, 77, 81, 81, 80, 77, 79, 77, 80, 80, 83, 78, 78, 78}
0
2
Returns: 79.18181818181819
{92, 93, 91, 93, 93, 93, 93, 93, 89, 92, 91, 89, 92, 89, 90, 90, 93, 92, 91, 92}
2
0
Returns: 91.83333333333333
{26, 61, 27, 26, 41, 27, 41, 47, 47, 47, 26, 26, 26, 26, 27, 27, 41, 27, 27, 47, 47, 41, 27, 89, 41, 61, 61, 41, 41, 89, 26, 41}
6
1
Returns: 42.0
{1, 1, 1, 1 }
1
1
Returns: 1.0
{1, 2, 3, 4, 5 }
0
1
Returns: 2.5
{2, 100, 4, 3, 5, 1, 9, 0, 0, 8, 3, 7, 3, 7, 3 }
2
10
Returns: 2.0
{31, 52, 20, 86, 47, 76, 82, 27, 42, 29 }
1
4
Returns: 35.2
{30 }
0
0
Returns: 30.0
{9, 30, 22, 30, 19, 14, 13, 23, 17, 29, 21, 23, 27, 22, 26, 20, 20, 20, 38, 30, 28, 30, 28, 19, 31, 29, 19, 23, 17, 32, 20, 20, 17, 32, 6, 25, 27, 17, 31, 14, 16, 15, 37, 27, 24, 21, 19, 29, 42, 10 }
5
1
Returns: 24.181818181818183
{15, 16, 80 }
2
0
Returns: 80.0
{70, 99, 96, 0, 30, 100, 100, 0, 0 }
1
1
Returns: 56.42857142857143
{1, 2, 4, 7, 14, 25, 34, 59, 78, 100 }
3
3
Returns: 20.0