-
-
Save codecademydev/866ff73ca668ef0bcbbc90f31c35d751 to your computer and use it in GitHub Desktop.
Codecademy export
This file contains 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
// Declare and export the functions here. | |
const caesarCipher = (str,amount) => { | |
if (amount < 0) { | |
return caesarCipher(str, amount + 26); | |
} | |
let output = ''; | |
for (let i = 0; i < str.length; i++) { | |
let char = str[i]; | |
if (char.match(/[a-z]/i)) { | |
let code = str.charCodeAt(i); | |
if (code >= 65 && code <= 90) { | |
char = String.fromCharCode(((code - 65 + amount) % 26) + 65); | |
} else if (code >= 97 && code <= 122) { | |
char = String.fromCharCode(((code - 97 + amount) % 26) + 97); | |
} | |
} | |
output += char; | |
} | |
return output; | |
}; | |
const symbolCipher = (str) => { | |
const symbols = { | |
'i': '!', | |
'!': 'i', | |
'l': '1', | |
'1': 'l', | |
's': '$', | |
'$': 's', | |
'o': '0', | |
'0': 'o', | |
'a': '@', | |
'@': 'a', | |
'e': '3', | |
'3': 'e', | |
'b': '6', | |
'6': 'b' | |
} | |
let output = ''; | |
for (let i = 0; i < str.length; i++) { | |
let char = str.toLowerCase()[i]; | |
if (symbols[char]) { | |
output += symbols[char] | |
} else { | |
output += char; | |
} | |
} | |
return output; | |
}; | |
const reverseCipher = (sentence) => { | |
let words = sentence.split(' '); | |
for (let i = 0; i < words.length; i++) { | |
words[i] = words[i].split('').reverse().join(''); | |
} | |
return words.join(' '); | |
}; | |
module.exports.caesarCipher = caesarCipher; | |
module.exports.symbolCipher = symbolCipher; | |
module.exports.reverseCipher = reverseCipher; | |
This file contains 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
// Import the functions from encryptors.js here. | |
const encryptors = require('./encryptors.js'); | |
// Encryption Functions | |
///////////////////////////////////////////// | |
const { caesarCipher, symbolCipher, reverseCipher } = encryptors; | |
// User Input / Output Logic | |
///////////////////////////////////////////// | |
const encryptionMethod = getEncryptionMethod(); | |
process.stdin.on('data', (userInput) => { | |
displayEncryptedMessage(encryptionMethod, userInput); | |
}); | |
/* Helper function for determining which cipher method | |
the user chose when they ran the program. */ | |
function getEncryptionMethod() { | |
let encryptionMethod; | |
const encryptionType = process.argv[2]; | |
if (encryptionType === 'symbol') { | |
encryptionMethod = symbolCipher; | |
} else if (encryptionType === 'reverse') { | |
encryptionMethod = reverseCipher; | |
} else if (encryptionType === 'caesar') { | |
let amount = Number(process.argv[3]); | |
if (Number.isNaN(amount)) { | |
process.stdout.write(`Try again with a valid amount argument. \n`) | |
process.exit(); | |
} | |
encryptionMethod = (str) => caesarCipher(str, amount); | |
} | |
else { | |
process.stdout.write(`Try again with a valid encryption type. \n`) | |
process.exit(); | |
} | |
process.stdout.write('Enter the message you would like to encrypt...\n> '); | |
return encryptionMethod; | |
} | |
/* Helper function for displaying the encrypted message to the user. */ | |
function displayEncryptedMessage(encryptionMethod, userInput) { | |
let str = userInput.toString().trim(); | |
let output = encryptionMethod(str); | |
process.stdout.write(`\nHere is your encrypted message:\n> ${output}\n`) | |
process.exit(); | |
} |
This file contains 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
// Import the encryptors functions here. | |
const encryptors = require('./encryptors.js'); | |
const { caesarCipher, symbolCipher, reverseCipher } = encryptors; | |
// Use the encryptor functions here. | |
const encodeMessage = (str) => { | |
return | |
reverseCipher(symbolCipher(caesarCipher(str, 6))); | |
} | |
const decodeMessage = (str) => { | |
return | |
caesarCipher(symbolCipher(reverseCipher(str)), -6); | |
} | |
// Use the encryptor functions here. | |
// User input / output. | |
const handleInput = (userInput) => { | |
const str = userInput.toString().trim(); | |
let output; | |
if (process.argv[2] === 'encode') { | |
output = encodeMessage(str); | |
} | |
if (process.argv[2] === 'decode') { | |
output = decodeMessage(str); | |
} | |
process.stdout.write(output + '\n'); | |
process.exit(); | |
} | |
// Run the program. | |
process.stdout.write('Enter the message you would like to encrypt...\n> '); | |
process.stdin.on('data', handleInput); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment