Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 | 25x 25x 25x 1300x 1300x 17x 17x 277x 277x 17x | const input = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') const output = 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'.split('') const lookup = input.reduce<Record<string, string>>((m, k, i) => { m[k] = output[i] return m }, Object.create(null)) /** * 回转 13 位替换式密码。 * * @param str 原文 * @see https://zh.wikipedia.org/wiki/ROT13 * @example * ```typescript * rot13('hello world') // => 'uryyb jbeyq' * ``` */ export function rot13(str: string): string { let res = '' for (let i = 0, len = str.length; i < len; i++) { const char = str.charAt(i) res += lookup[char] || char } return res } |