-
Notifications
You must be signed in to change notification settings - Fork 6
/
example-skeleton.js
56 lines (49 loc) · 1.68 KB
/
example-skeleton.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
function Game(period) {
const PERIOD = period; // Number of intervals a payment is split across
const intervals = {}; // Interval data
const players = {}; // Player data
const otherData = {}; // Whatever you want!
let currentInterval = 1;
const completeInterval = () => {
currentInterval++;
};
const getCurrentInterval = () => {
return currentInterval;
};
const play = (name, amount) => {
// Fill this in
};
// Returns the number of points among all active players
// back during the time of the interval.
const getIntervalPoints = (intervalIndex) => {
if (
intervalIndex >= currentInterval ||
intervalIndex < currentInterval - PERIOD ||
intervalIndex < 1
) {
throw new Error('out of bounds');
}
// Fill this in
};
return {
completeInterval,
getCurrentInterval,
play,
getIntervalPoints
}
}
// Simulation using the example from the challenge document:
const game = Game(4);
game.play('alice', 1);
game.completeInterval(); // End interval 1, start 2
game.play('bob', 2);
game.getIntervalPoints(getCurrentInterval() - 1); // returns: 1
game.completeInterval(); // End interval 2, start 3
game.getIntervalPoints(getCurrentInterval() - 1); // returns: 2
game.completeInterval(); // End interval 3, start 4
game.play('alice', 1);
game.completeInterval(); // End interval 4, start 5
game.completeInterval(); // End interval 5, start 6
game.completeInterval(); // End interval 6, start 7
game.getIntervalPoints(getCurrentInterval() - 1); // returns: 3.5
game.getIntervalPoints(getCurrentInterval() - 4); // returns: 3