Skip to content

Commit 51c68ea

Browse files
authored
Create 1223-dice-roll-simulation.js
1 parent 2878106 commit 51c68ea

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

1223-dice-roll-simulation.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number} n
3+
* @param {number[]} rollMax
4+
* @return {number}
5+
*/
6+
const dieSimulator = function(n, rollMax) {
7+
const mod = 10 ** 9 + 7
8+
const faces = rollMax.length
9+
const dp = Array.from({ length: n + 1 }, () => new Array(faces + 1).fill(0))
10+
dp[0][faces] = 1
11+
for(let j = 0; j < faces; j++) {
12+
dp[1][j] = 1
13+
}
14+
dp[1][faces] = faces
15+
for(let i = 2; i < n + 1; i++) {
16+
for(let j = 0; j < faces; j++) {
17+
for(let k = 1; k < rollMax[j] + 1; k++) {
18+
if(i - k < 0) break
19+
dp[i][j] += dp[i - k][faces] - dp[i - k][j]
20+
dp[i][j] %= mod
21+
}
22+
}
23+
dp[i][faces] = dp[i].reduce((ac, e) => ac + e, 0)
24+
}
25+
return dp[n][faces] % mod
26+
};

0 commit comments

Comments
 (0)