Calculate scores
Calculate exam score total based on some rules.
by Renoir Boulanger
JavaScript
"use strict";
/**
* Calculate exam score total based on some rules.
*
* Sample Input
*
* 5 6 7
* 3 6 10
*
* Sample Output
*
* 1 1
*
* Explanation
*
* In this example:
*
* A = (a0, a1, a2) = (5, 6, 7)
* B = (b0, b1, b2) = (3, 6, 10)
*
* Now, let's compare each individual score:
*
* a0 > b0 , so Alice receives point.
* a1 = b1 , so nobody receives a point.
* a2 < b2 , so Bob receives point.
*
* Alice's comparison score is 1, and Bob's comparison score is 1.
*
* Thus, we return 1 1
*
* (Alice's comparison score followed by Bob's comparison score)
**/
function main(input_data) {
let scores = []
, out = [];
input_data.forEach(entry => {
entry.split(' ').map(n => Number(n)).forEach((result, result_index) => {
if (!Array.isArray(scores[result_index])) {
scores[result_index] = [];
}
scores[result_index].push(result);
})
});
scores.forEach((test_entry, test_index) => {
let largest = Math.max.apply(0, test_entry)
, largestIndex = test_entry.findIndex(e => { return e === largest})
, outcome = Array(test_entry.length).fill(0)
, isSameScore = test_entry.every(e => { return e === largest });
if (!isSameScore) {
outcome[largestIndex] = 1;
}
out[test_index] = outcome;
})
var results = Array(out[0].length).fill(0);
out.forEach(test_points => {
test_points.forEach((out_point, out_point_idx) => {
results[out_point_idx] += out_point;
})
})
return results.join(' ');
}
/** Running some test samples **/
var contestants = [],
output = [];
contestants.push('5 6 7'); // 1
contestants.push('3 6 10'); // 1
output.push([contestants, main(contestants)]);
var contestants = [];
contestants.push('5 6 7 9 5 6'); // 3
contestants.push('3 6 10 3 3 6'); // 1
output.push([contestants, main(contestants)]);
var contestants =...