From 87dc76d56b32bdcdefed00219a3dfb3b5d8cb1c5 Mon Sep 17 00:00:00 2001 From: EstrellaBF Date: Tue, 7 Nov 2017 14:27:06 -0500 Subject: [PATCH 1/6] subiendo mis archivos --- .eslintrc | 29 +++++++++++++++++++ ASSETS/DOCS/diagramadeFlujo.jpg | Bin 0 -> 51151 bytes JS/app.js | 49 ++++++++++++++++++++++++++++++++ index.html | 12 ++++++++ 4 files changed, 90 insertions(+) create mode 100644 .eslintrc create mode 100644 ASSETS/DOCS/diagramadeFlujo.jpg create mode 100644 JS/app.js create mode 100644 index.html diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..fbb5dc3 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,29 @@ +{ + "parserOptions": { + "ecmaVersion": 6 + }, + "rules": { + "keyword-spacing": 1, + "space-before-function-paren": [1, "never"], + "eqeqeq": 1, + "space-infix-ops": 1, + "comma-spacing": 1, + "brace-style": 1, + "no-multiple-empty-lines": 1, + "camelcase": 1, + "func-call-spacing": 1, + "key-spacing": 1, + "semi": 1, + "no-floating-decimal": 1, + "no-multi-spaces": 1, + "object-property-newline": 1, + "padded-blocks": [1, "never"], + "space-before-blocks": 1, + "space-in-parens": 1, + "spaced-comment": 1, + "quotes": [1, "single"], + "id-length": [1, { "exceptions": ["i", "j", "x"] }], + "indent": [1, 2], + "no-array-constructor": 1 + } +} diff --git a/ASSETS/DOCS/diagramadeFlujo.jpg b/ASSETS/DOCS/diagramadeFlujo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b056fee5e726d0c1c533feb61697e5d385674827 GIT binary patch literal 51151 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

u<;xoLgB=-JN|ljg%))T~p$)~axp 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 + + + + Cifrado César + + +

Coding and Decoding

+

Write a word, and we show you the same word coded and decoded.

+ + + \ No newline at end of file From 59a6706a12655957fda7bfde345ba9c3b3b02cea Mon Sep 17 00:00:00 2001 From: EstrellaBF Date: Wed, 15 Nov 2017 13:32:03 -0500 Subject: [PATCH 2/6] subiendo archivo js segun regla slint --- JS/app.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/JS/app.js b/JS/app.js index b817cff..9a7bf36 100644 --- a/JS/app.js +++ b/JS/app.js @@ -1,7 +1,6 @@ var phrase = prompt('Write here'); function cipher(word) { - var strCipher = '' ; for (var i = 0; i < word.length; i++) { // turn word into ASCII code. @@ -11,7 +10,7 @@ function cipher(word) { // using the formula. var num = (letter - 65 + 33) % 26 + 65; // num into string - strCipher =+ String.fromCharCode(num); + strCipher = + String.fromCharCode(num); // if 'word' is lowercase... } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { // using the formula. @@ -29,7 +28,7 @@ cipher(phrase); function decipher(word) { var strDecipher = '' ; - for (var i = 0; i < word.length; i++ ) { + for (var i = 0; i < word.length; i++) { var letter = word.charCodeAt(i); if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { From deef5add3f22264c5f05cd47e959b9229b6dae91 Mon Sep 17 00:00:00 2001 From: EstrellaBF Date: Sun, 4 Feb 2018 09:27:57 -0500 Subject: [PATCH 3/6] cambiando for por filter --- JS/app.js | 61 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/JS/app.js b/JS/app.js index 9a7bf36..92d24a4 100644 --- a/JS/app.js +++ b/JS/app.js @@ -1,48 +1,51 @@ -var phrase = prompt('Write here'); +let phrase = prompt('Write here'); +let phraseArr = phrase.split(''); +// console.log(Array.isArray(phraseArr)); // ["abc"] -function cipher(word) { - var strCipher = '' ; - for (var i = 0; i < word.length; i++) { - // turn word into ASCII code. - var letter = word.charCodeAt(i); - // if 'word' is uppercase... +const cipher = word => { + let strCipher = '' ; + // En lugar de for se usará fiñter para recorrer la frase palabra por palabra + let positionPhraseLetter = phraseArr.filter((position) => { + let positionOfLetter = phraseArr.indexOf(position); + // regresa el codigo en número ascii + let letter = word.charCodeAt(positionOfLetter); if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { // using the formula. - var num = (letter - 65 + 33) % 26 + 65; + let num = (letter - 65 + 33) % 26 + 65; // num into string strCipher = + String.fromCharCode(num); // if 'word' is lowercase... } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { // using the formula. - var num2 = (letter - 97 + 33) % 26 + 97; + let num2 = (letter - 97 + 33) % 26 + 97; // num into string strCipher = strCipher + String.fromCharCode(num2); } else { alert('Write Again, please.'); } - } - return alert(strCipher); + return alert(strCipher); + }); } cipher(phrase); -function decipher(word) { - var strDecipher = '' ; - for (var i = 0; i < word.length; i++) { - var letter = word.charCodeAt(i); +// const decipher = word => { +// let strDecipher = '' ; +// for (var i = 0; i < word.length; i++) { +// let letter = word.charCodeAt(i); - if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { - // añadir la formula y almaceno en num - var num = (letter - 65 + 26) % 26 + 65; +// if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { +// // añadir la formula y almaceno en num +// let num = (letter - 65 + 26) % 26 + 65; - strDecipher = strDecipher + String.fromCharCode(num); - } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { - var num2 = (letter - 97 + 26) % 26 + 97; - strDecipher = strDecipher + String.fromCharCode(num2); - } else { - alert('Write Again, please.'); - } - } - return alert(strDecipher); -} -decipher(phrase); \ No newline at end of file +// strDecipher = strDecipher + String.fromCharCode(num); +// } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { +// let num2 = (letter - 97 + 26) % 26 + 97; +// strDecipher = strDecipher + String.fromCharCode(num2); +// } else { +// alert('Write Again, please.'); +// } +// } +// return alert(strDecipher); +// } +// decipher(phrase); \ No newline at end of file From 99ec373798a7ae4a926dfa233703a29fc4f02840 Mon Sep 17 00:00:00 2001 From: EstrellaBF Date: Mon, 5 Feb 2018 12:11:41 -0500 Subject: [PATCH 4/6] subiendo decipher --- JS/app.js | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/JS/app.js b/JS/app.js index 92d24a4..60d5f0b 100644 --- a/JS/app.js +++ b/JS/app.js @@ -4,7 +4,7 @@ let phraseArr = phrase.split(''); const cipher = word => { let strCipher = '' ; - // En lugar de for se usará fiñter para recorrer la frase palabra por palabra + // En lugar de for se usará filter para recorrer la frase palabra por palabra let positionPhraseLetter = phraseArr.filter((position) => { let positionOfLetter = phraseArr.indexOf(position); // regresa el codigo en número ascii @@ -29,23 +29,25 @@ const cipher = word => { cipher(phrase); -// const decipher = word => { -// let strDecipher = '' ; -// for (var i = 0; i < word.length; i++) { -// let letter = word.charCodeAt(i); +const decipher = word => { + let strDecipher = '' ; + + let positionPhraseLetter = phraseArr.filter((position) => { + let positionOfLetter = phraseArr.indexOf(position); + let letter = word.charCodeAt(positionOfLetter); -// if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { -// // añadir la formula y almaceno en num -// let num = (letter - 65 + 26) % 26 + 65; + if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { + // añadir la formula y almaceno en num + let num = (letter - 65 + 26) % 26 + 65; -// strDecipher = strDecipher + String.fromCharCode(num); -// } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { -// let num2 = (letter - 97 + 26) % 26 + 97; -// strDecipher = strDecipher + String.fromCharCode(num2); -// } else { -// alert('Write Again, please.'); -// } -// } -// return alert(strDecipher); -// } -// decipher(phrase); \ No newline at end of file + strDecipher = strDecipher + String.fromCharCode(num); + } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { + let num2 = (letter - 97 + 26) % 26 + 97; + strDecipher = strDecipher + String.fromCharCode(num2); + } else { + alert('Write Again, please.'); + } + }); + return alert(strDecipher); +} +decipher(phrase); \ No newline at end of file From 7c51039fecec503c3d008b93f5a750880ab25f4a Mon Sep 17 00:00:00 2001 From: EstrellaBF Date: Mon, 5 Feb 2018 12:54:40 -0500 Subject: [PATCH 5/6] =?UTF-8?q?editando=20may=C3=BAscula=20y=20min=C3=BAsc?= =?UTF-8?q?ula?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JS/app.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/JS/app.js b/JS/app.js index 60d5f0b..763efda 100644 --- a/JS/app.js +++ b/JS/app.js @@ -4,26 +4,28 @@ let phraseArr = phrase.split(''); const cipher = word => { let strCipher = '' ; + // debugger // En lugar de for se usará filter para recorrer la frase palabra por palabra let positionPhraseLetter = phraseArr.filter((position) => { let positionOfLetter = phraseArr.indexOf(position); // regresa el codigo en número ascii let letter = word.charCodeAt(positionOfLetter); - if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { - // using the formula. + // para mayúsculas + if (Number.isNaN(parseInt(word)) && letter >= 65 && letter <= 90 && word !== '') { let num = (letter - 65 + 33) % 26 + 65; - // num into string - strCipher = + String.fromCharCode(num); - // if 'word' is lowercase... - } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { - // using the formula. + console.log(num); + strCipher += String.fromCharCode(num); + console.log(strCipher); + // para minúsculas + } else if (Number.isNaN(parseInt(word)) && letter >= 97 && letter <= 122 && word !== '') { + // usando fórmula let num2 = (letter - 97 + 33) % 26 + 97; - // num into string - strCipher = strCipher + String.fromCharCode(num2); + // num a string + strCipher += String.fromCharCode(num2); } else { alert('Write Again, please.'); } - return alert(strCipher); + return alert(`Your cipher number is ${strCipher}`); }); } cipher(phrase); @@ -40,14 +42,14 @@ const decipher = word => { // añadir la formula y almaceno en num let num = (letter - 65 + 26) % 26 + 65; - strDecipher = strDecipher + String.fromCharCode(num); + strDecipher += String.fromCharCode(num); } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { let num2 = (letter - 97 + 26) % 26 + 97; - strDecipher = strDecipher + String.fromCharCode(num2); + strDecipher += String.fromCharCode(num2); } else { alert('Write Again, please.'); } }); - return alert(strDecipher); + return alert(`Your decipher number is ${strDecipher}`); } decipher(phrase); \ No newline at end of file From 5ef9b70f9ef62270476371bcc3b4a71432f17c43 Mon Sep 17 00:00:00 2001 From: EstrellaBF Date: Mon, 5 Feb 2018 18:46:10 -0500 Subject: [PATCH 6/6] =?UTF-8?q?verificando=20que=20no=20sea=20espacio=20ni?= =?UTF-8?q?=20n=C3=BAmero?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JS/app.js | 99 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/JS/app.js b/JS/app.js index 763efda..f4e0c79 100644 --- a/JS/app.js +++ b/JS/app.js @@ -3,53 +3,62 @@ let phraseArr = phrase.split(''); // console.log(Array.isArray(phraseArr)); // ["abc"] const cipher = word => { - let strCipher = '' ; - // debugger - // En lugar de for se usará filter para recorrer la frase palabra por palabra - let positionPhraseLetter = phraseArr.filter((position) => { - let positionOfLetter = phraseArr.indexOf(position); - // regresa el codigo en número ascii - let letter = word.charCodeAt(positionOfLetter); - // para mayúsculas - if (Number.isNaN(parseInt(word)) && letter >= 65 && letter <= 90 && word !== '') { - let num = (letter - 65 + 33) % 26 + 65; - console.log(num); - strCipher += String.fromCharCode(num); - console.log(strCipher); - // para minúsculas - } else if (Number.isNaN(parseInt(word)) && letter >= 97 && letter <= 122 && word !== '') { - // usando fórmula - let num2 = (letter - 97 + 33) % 26 + 97; - // num a string - strCipher += String.fromCharCode(num2); - } else { - alert('Write Again, please.'); - } + // debugger; + // Verificando si es una palabra y diferente de vacia además de que no tenga espacios. + if (Number.isNaN(parseInt(word)) && word !== '') { + let strCipher = ''; + let positionOfLetter; + // En lugar de for se usará filter para recorrer la frase palabra por palabra + let positionPhraseLetter = phraseArr.filter((position) => { // Iteración de las palabras de phrase + positionOfLetter = phraseArr.indexOf(position); + // console.log(positionOfLetter); // retorna su posición + // // regresa el codigo en número ascii + let letter = word.charCodeAt(positionOfLetter); + // console.log(letter); // retorna su codigo ascii + // para mayúsculas + if (letter >= 65 && letter <= 90) { + let num = (letter - 65 + 33) % 26 + 65; + console.log(num); + strCipher += String.fromCharCode(num); + console.log(strCipher); + // para minúsculas + } else if (letter >= 97 && letter <= 122) { + // usando fórmula + let num2 = (letter - 97 + 33) % 26 + 97; + // num a string + strCipher += String.fromCharCode(num2); + console.log(strCipher); + } + }); + console.log(positionOfLetter); return alert(`Your cipher number is ${strCipher}`); - }); -} + } else { + alert('Write Again, please.'); + } +}; cipher(phrase); -const decipher = word => { - let strDecipher = '' ; - - let positionPhraseLetter = phraseArr.filter((position) => { - let positionOfLetter = phraseArr.indexOf(position); - let letter = word.charCodeAt(positionOfLetter); - - if (Number.isNaN(parseInt(word)) && 65 <= letter && letter <= 90 && word !== '') { - // añadir la formula y almaceno en num - let num = (letter - 65 + 26) % 26 + 65; - - strDecipher += String.fromCharCode(num); - } else if (Number.isNaN(parseInt(word)) && 97 <= letter && letter <= 122 && word !== '') { - let num2 = (letter - 97 + 26) % 26 + 97; - strDecipher += String.fromCharCode(num2); - } else { - alert('Write Again, please.'); - } - }); - return alert(`Your decipher number is ${strDecipher}`); -} +const decipher = word => { + if (Number.isNaN(parseInt(word)) && word !== '') { + let strDecipher = ''; + let positionOfLetter; + let positionPhraseLetter = phraseArr.filter((position) => { + positionOfLetter = phraseArr.indexOf(position); + let letter = word.charCodeAt(positionOfLetter); + if (65 <= letter && letter <= 90) { + // añadir la formula y almaceno en num + let num = (letter - 65 + 26) % 26 + 65; + strDecipher += String.fromCharCode(num); + } else if (97 <= letter && letter <= 122) { + let num2 = (letter - 97 + 26) % 26 + 97; + strDecipher += String.fromCharCode(num2); + } + }); + return alert(`Your decipher number is ${strDecipher}`); + } + // else { + // alert('Write Again, please.'); + // } +}; decipher(phrase); \ No newline at end of file