homepage/content/blog/2022-10-10-CLRG-Results-Ana.../awardPoints.mjs

132 lines
2.2 KiB
JavaScript

let awardPoints = [
100, // 1
75, // 2
65, // 3
60, // 4
56, // 5
53, // 6
50, // 7
47, // 8
45, // 9
43, // 10
41, // 11
39, // 12
38, // 13
37, // 14
36, // 15
35, // 16
34, // 17
33, // 18
32, // 19
31, // 20
30, // 21
29, // 22
28, // 23
27, // 24
26, // 25
25, // 26
24, // 27
23, // 28
22, // 29
21, // 30
20, // 31
19, // 32
18, // 33
17, // 34
16, // 35
15, // 36
14, // 37
13, // 38
12, // 39
11, // 40
10, // 41
9, // 42
8, // 43
7, // 44
6, // 45
5, // 46
4, // 47
3, // 48
2, // 49
1, // 50
0.75, // 51
0.65, // 52
0.60, // 53
0.56, // 54
0.53, // 55
0.50, // 56
0.47, // 57
0.45, // 58
0.43, // 59
0.41, // 60
0.39, // 61
0.38, // 62
0.37, // 63
0.36, // 64
0.35, // 65
0.34, // 66
0.33, // 67
0.32, // 68
0.31, // 69
0.30, // 70
0.29, // 71
0.28, // 72
0.27, // 73
0.26, // 74
0.25, // 75
0.24, // 76
0.23, // 77
0.22, // 78
0.21, // 79
0.20, // 80
0.19, // 81
0.18, // 82
0.17, // 83
0.16, // 84
0.15, // 85
0.14, // 86
0.13, // 87
0.12, // 88
0.11, // 89
0.10, // 90
0.09, // 91
0.08, // 92
0.07, // 93
0.06, // 94
0.05, // 95
0.04, // 96
0.03, // 97
0.02, // 98
0.01, // 99
0.00, // 100
]
/**
* Given a score, calculate what placings could have gotten it.
*
* @param {Number} score Score we're going to guess
* @param {Number} tied Highest number n-way tie to consider
* @returns {Array.<Number>} List of possible placings
*/
function guessPlacing(score, tied=3) {
let placings = []
for (let t = tied; t > 0; t--) {
let totalPoints = score * t
for (let placing = 0; placing < awardPoints.length - t; placing++) {
let acc = 0
for (let i = 0; i < t; i++) {
acc += awardPoints[placing+i]
}
if (acc == totalPoints) {
placings.push(placing+1)
}
}
}
return placings
}
export {
awardPoints,
guessPlacing,
}