diff --git a/solution/0900-0999/0935.Knight Dialer/Solution.ts b/solution/0900-0999/0935.Knight Dialer/Solution.ts index e262e04661c56..4695d9a4feddc 100644 --- a/solution/0900-0999/0935.Knight Dialer/Solution.ts +++ b/solution/0900-0999/0935.Knight Dialer/Solution.ts @@ -1,34 +1,18 @@ function knightDialer(n: number): number { - const MOD: number = 1e9 + 7; - - if (n === 1) { - return 10; + const mod = 1e9 + 7; + const f: number[] = Array(10).fill(1); + while (--n) { + const g: number[] = Array(10).fill(0); + g[0] = (f[4] + f[6]) % mod; + g[1] = (f[6] + f[8]) % mod; + g[2] = (f[7] + f[9]) % mod; + g[3] = (f[4] + f[8]) % mod; + g[4] = (f[0] + f[3] + f[9]) % mod; + g[6] = (f[0] + f[1] + f[7]) % mod; + g[7] = (f[2] + f[6]) % mod; + g[8] = (f[1] + f[3]) % mod; + g[9] = (f[2] + f[4]) % mod; + f.splice(0, 10, ...g); } - - const f: number[] = new Array(10).fill(1); - - while (--n > 0) { - const t: number[] = new Array(10).fill(0); - - t[0] = f[4] + f[6]; - t[1] = f[6] + f[8]; - t[2] = f[7] + f[9]; - t[3] = f[4] + f[8]; - t[4] = f[0] + f[3] + f[9]; - t[6] = f[0] + f[1] + f[7]; - t[7] = f[2] + f[6]; - t[8] = f[1] + f[3]; - t[9] = f[2] + f[4]; - - for (let i = 0; i < 10; ++i) { - f[i] = t[i] % MOD; - } - } - - let ans: number = 0; - for (const v of f) { - ans = (ans + v) % MOD; - } - - return ans; + return f.reduce((a, b) => (a + b) % mod); } diff --git a/solution/0900-0999/0935.Knight Dialer/solution.ts b/solution/0900-0999/0935.Knight Dialer/solution.ts deleted file mode 100644 index 4695d9a4feddc..0000000000000 --- a/solution/0900-0999/0935.Knight Dialer/solution.ts +++ /dev/null @@ -1,18 +0,0 @@ -function knightDialer(n: number): number { - const mod = 1e9 + 7; - const f: number[] = Array(10).fill(1); - while (--n) { - const g: number[] = Array(10).fill(0); - g[0] = (f[4] + f[6]) % mod; - g[1] = (f[6] + f[8]) % mod; - g[2] = (f[7] + f[9]) % mod; - g[3] = (f[4] + f[8]) % mod; - g[4] = (f[0] + f[3] + f[9]) % mod; - g[6] = (f[0] + f[1] + f[7]) % mod; - g[7] = (f[2] + f[6]) % mod; - g[8] = (f[1] + f[3]) % mod; - g[9] = (f[2] + f[4]) % mod; - f.splice(0, 10, ...g); - } - return f.reduce((a, b) => (a + b) % mod); -}