From c586807fce4aad62ab05d3d550dc81b1551ea0f0 Mon Sep 17 00:00:00 2001 From: Edera Date: Fri, 29 Oct 2021 22:42:31 +0200 Subject: [PATCH 1/2] added: my solutions in javascript to the caesar cipher challenge --- .../solutions/valentinadagata/main.js | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 challenges/easy/caesar-cipher/solutions/valentinadagata/main.js diff --git a/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js b/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js new file mode 100644 index 0000000..5ac151e --- /dev/null +++ b/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js @@ -0,0 +1,69 @@ +const letters = 26; + +function encode(str, shift) { + shift = shift % letters + + return str.split("").map(character => { + // if is a letter + if ((character >= "a" && character <= "z") || (character >= "A" && character <= "Z")) { + // if is lowercase + if (character >= "a" && character <= "z") { + ascii = 97 + } + // if is uppercase + else { + ascii = 65 + } + + new_str = letters + character.charCodeAt(0) - ascii + new_str = (new_str + shift) % letters + encrypt = String.fromCharCode(new_str + ascii) + return encrypt + } + // don't encrypt if it's not a letter + else return character; + }).join(""); +} + + +function decode(str, shift) { + shift = shift % letters + + return str.split("").map(character => { + // if is a letter + if ((character >= "a" && character <= "z") || (character >= "A" && character <= "Z")) { + // if is lowercase + if (character >= "a" && character <= "z") { + ascii = 97 + } + // if is uppercase + else { + ascii = 65 + } + + new_str = letters + character.charCodeAt(0) - ascii + new_str = (new_str - shift) % letters + decrypt = String.fromCharCode(new_str + ascii) + return decrypt + } + else return character; + }).join(""); +} + + +/* + +// encode test +console.log(encode('Hello, World!', 7)); // => 'Olssv, Dvysk!' +console.log(encode('I love pizza.', -7)); // => 'B ehox ibsst.' +console.log(encode('HytyQapgnr kyicq qclqc. Qmkcrgkcq.', 50)); // => 'HytyQapgnr kyicq qclqc. Qmkcrgkcq.' +console.log(encode('abc', 24)); // => 'yza' + + +// decode test +console.log(decode('CxvxaaxfMneb Axltb!', 9)); // => 'TomorrowDevs Rocks!' +console.log(decode('Gtdflw Defotz Nzop td rcple!!!', -15)); // => 'Visual Studio Code is great!!!' +console.log(decode('Vriwzduh Hqjlqhhulqj', 3)); // => 'Software Engineering' +console.log(decode("Buj'i mhyju jxu syfxuh.", 120)); // => "Let's write the cipher." + +*/ \ No newline at end of file From 8fdf2bfe8c013651b5c22e221d78f5523b37cccd Mon Sep 17 00:00:00 2001 From: Edera Date: Mon, 1 Nov 2021 23:25:51 +0100 Subject: [PATCH 2/2] fix: I declared each variable and avoid the repetition in the decode function --- .../solutions/valentinadagata/main.js | 40 +++++-------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js b/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js index 5ac151e..97d1cae 100644 --- a/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js +++ b/challenges/easy/caesar-cipher/solutions/valentinadagata/main.js @@ -1,23 +1,22 @@ const letters = 26; function encode(str, shift) { - shift = shift % letters + let new_shift = shift % letters return str.split("").map(character => { // if is a letter if ((character >= "a" && character <= "z") || (character >= "A" && character <= "Z")) { + + // if is uppercase + let ascii = 65 + // if is lowercase if (character >= "a" && character <= "z") { ascii = 97 } - // if is uppercase - else { - ascii = 65 - } - new_str = letters + character.charCodeAt(0) - ascii - new_str = (new_str + shift) % letters - encrypt = String.fromCharCode(new_str + ascii) + let new_str = (letters + character.charCodeAt(0) - ascii + new_shift) % letters + let encrypt = String.fromCharCode(new_str + ascii) return encrypt } // don't encrypt if it's not a letter @@ -27,32 +26,12 @@ function encode(str, shift) { function decode(str, shift) { - shift = shift % letters - - return str.split("").map(character => { - // if is a letter - if ((character >= "a" && character <= "z") || (character >= "A" && character <= "Z")) { - // if is lowercase - if (character >= "a" && character <= "z") { - ascii = 97 - } - // if is uppercase - else { - ascii = 65 - } - - new_str = letters + character.charCodeAt(0) - ascii - new_str = (new_str - shift) % letters - decrypt = String.fromCharCode(new_str + ascii) - return decrypt - } - else return character; - }).join(""); + new_shift = -shift + return encode(str, new_shift) } /* - // encode test console.log(encode('Hello, World!', 7)); // => 'Olssv, Dvysk!' console.log(encode('I love pizza.', -7)); // => 'B ehox ibsst.' @@ -65,5 +44,4 @@ console.log(decode('CxvxaaxfMneb Axltb!', 9)); // => 'TomorrowDevs Rocks!' console.log(decode('Gtdflw Defotz Nzop td rcple!!!', -15)); // => 'Visual Studio Code is great!!!' console.log(decode('Vriwzduh Hqjlqhhulqj', 3)); // => 'Software Engineering' console.log(decode("Buj'i mhyju jxu syfxuh.", 120)); // => "Let's write the cipher." - */ \ No newline at end of file