Number of Distinct Roll Sequences LeetCode solution in JavaScript
1var distinctSequences = function (n) {2// 3D DP [n + 1][7][7] => rollIdx, prev, prevPrev3const dp = Array.from({ length: n + 1 }, () => {4return new Array(7).fill(0).map(() => new Array(7).fill(0));5});67const gcd = (a, b) => {8if (a < b) [b, a] = [a, b];9while (b) {10let temp = b;11b = a % b;12a = temp;13}14return a;15};1617const ds = (n, p = 0, pp = 0) => {18if (n == 0) return 1;19if (dp[n][p][pp] == 0) {20for (let i = 1; i <= 6; i++) {21if (i != p && i != pp && (p == 0 || gcd(p, i) == 1)) {22dp[n][p][pp] = (dp[n][p][pp] + ds(n - 1, i, p)) % 1000000007;23}24}25}26return dp[n][p][pp];27};28return ds(n);29};