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 27 28 29 30 31 32 33 34 35 36 | 5x 5x 87x 5x 2x 2x 29x 2x 7x 1x 13x 2x 11x 2x 9x 2x 7x | function up(fromChar: number, toChar: number, step: number) { const list = []; for (let i = fromChar; i <= toChar; i += step) { list.push(String.fromCharCode(i)); } return list; } function down(fromChar: number, toChar: number, step: number) { const list = []; for (let i = fromChar; i >= toChar; i -= step) { list.push(String.fromCharCode(i)); } return list; } function _charRange(fromChar: number, toChar: number, step: number) { return fromChar < toChar ? up(fromChar, toChar, step) : down(fromChar, toChar, step); } export const charRange = (from: string, to: string, step = 1): string[] => { if (step <= 0) { throw Error('step must be greater than 0'); } if (from.length !== 1) { throw Error('from must be a character (length: 1)'); } if (to.length !== 1) { throw Error('to must be a character (length: 1)'); } return _charRange(from.charCodeAt(0), to.charCodeAt(0), step); }; |