Hi I am a new coder and I am strugguling with this problem, could sombody help me telling me what I am missing?
I am having trouble with the step 9 I think it should run but it is still showing as undefined,
The step is the following:
Use the three encryption methods to complete the encodeMessage()
function by passing the input str
parameter into one encryption function and then passing the returned value to the next encryption function. encodeMessage()
should return the final encoded message.
Some guidelines:
- You must use each encryption function at least once.
- It is your choice what order you use to call the encryption functions.
- You may also re-use encryption functions to encode the message.
caesarCipher()
requires anamount
argument. Choose some number between0
and26
to use for this argument and remember your choice fordecodeMessage()
.
When you are finished, try running the program like so:
$ node super-encoder.js encode
The code writen is the followig
//messsage-mixer
{
// Import the functions from encryptors.js here.
const encryptors = require('./encryptors.js');
const caesarCipher = encryptors.caesarCipher;
const symboCipher = encryptors.symboCipher;
const reverseCipher = encryptors.reverseCipher;
// Encryption Functions
/////////////////////////////////////////////
// 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();
}
}
{
// Declare and export the functions here.
const caesarCipher = (str, amount = 0) => {
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;
}
//super-encoder
{
// Import the encryptors functions here.
const encryptors = require('./encryptors.js');
const caesarCipher = encryptors.caesarCipher;
const symboCipher = encryptors.symboCipher;
const reverseCipher = encryptors.reverseCipher;
const encodeMessage = (str) => {
// Use the encryptor functions here.
return
reverseCipher(symbolCipher(caesarCipher(str, 6)));
}
const decodeMessage = (str) => {
// 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);
}