Created
April 8, 2026 15:24
-
-
Save petergi/8e5c3dcf44b53f83858d1ce15de73abc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Encrypts or decrypts a given string using the Caesar cipher. | |
| // - Use the modulo (`%`) operator and the ternary operator (`?`) to calculate the correct encryption/decryption key. | |
| // - Use the spread operator (`...`) and `Array.prototype.map()` to iterate over the letters of the given string. | |
| // - Use `String.prototype.charCodeAt()` and `String.fromCharCode()` to convert each letter appropriately, ignoring special characters, spaces etc. | |
| // - Use `Array.prototype.join()` to combine all the letters into a string. | |
| // - Pass `true` to the last parameter, `decrypt`, to decrypt an encrypted string. | |
| const caesarCipher = (str, shift, decrypt = false) => { | |
| const s = decrypt ? (26 - shift) % 26 : shift; | |
| const n = s > 0 ? s : 26 + (s % 26); | |
| return [...str] | |
| .map((l, i) => { | |
| const c = str.charCodeAt(i); | |
| if (c >= 65 && c <= 90) | |
| return String.fromCharCode(((c - 65 + n) % 26) + 65); | |
| if (c >= 97 && c <= 122) | |
| return String.fromCharCode(((c - 97 + n) % 26) + 97); | |
| return l; | |
| }) | |
| .join(''); | |
| }; | |
| caesarCipher('Hello World!', -3); // 'Ebiil Tloia!' | |
| caesarCipher('Ebiil Tloia!', 23, true); // 'Hello World!' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment