-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCaesars-Cipher.js
More file actions
27 lines (19 loc) · 923 Bytes
/
Caesars-Cipher.js
File metadata and controls
27 lines (19 loc) · 923 Bytes
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
/*
Caesars Cipher
One of the simplest and most widely known ciphers is a Caesar cipher, also known as a shift cipher. In a shift cipher the meanings of the letters are shifted by some set amount.
A common modern use is the ROT13 cipher, where the values of the letters are shifted by 13 places. Thus A -> N, B -> O and so on.
Write a function which takes a ROT13 encoded string as input and returns a decoded string.
All letters will be uppercase. Do not transform any non-alphabetic character (i.e. spaces, punctuation), but do pass them on.
*/
function rot13(str) {
const alphabetRegex = /[A-Za-z]/;
const A = "A".charCodeAt(0);
let numberOfLetters = 26;
return str.split("").map(ch => {
let currentCharCode = ch.charCodeAt(0);
return (ch.match(alphabetRegex) ?
String.fromCharCode((((currentCharCode - A) + 13) % numberOfLetters) + A)
: ch);
}).join('');
}
rot13("SERR PBQR PNZC");