diff --git a/README.md b/README.md index e2577d6..1096865 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,41 @@ -# Cifrado César - -> Recuerda seguir siempre esta [guía de estilos](https://github.com/Laboratoria/js-style-guide/) - -Crea una web que pida, por medio de un `prompt()`, una frase al usuario y -devuelva el mismo mensaje encriptado según el -[algoritmo de Cifrado César](https://en.wikipedia.org/wiki/Caesar_cipher) -con el parámetro de desplazamiento de **33 espacios hacia la derecha** - -Por ejemplo: - -- Texto original: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` -- Texto codificado: `HIJKLMNOPQRSTUVWXYZABCDEFG` - -## Entregables - -Para cada producto debes entregar **un repositorio de GitHub** que -contenga: -1. Archivo `README.md` que explique el **pseudocódigo** de tu solución y su -**diagrama de flujo** -2. Archivo `app.js` con el **código** de tu solución -3. Archivo `index.html` vinculado con tu `app.js` - -## Tips - -A continuación un video de Michelle que te lleva a través de la fórmula -matemática del Cifrado César y un par de cosas más que debes saber para -resolver este reto. ¡Escúchala con detenimiento y sigue sus consejos! :) - -[![tips caesar cipher](https://img.youtube.com/vi/zd8eVrXhs7Y/0.jpg)](https://www.youtube.com/watch?v=zd8eVrXhs7Y) - -También te compartimos más información de lo que Michelle te ha explicado -en el video anterior: - -- [Aprende más sobre `charCodeAt()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt) -- [Aprende más sobre `String.fromCharCode()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode) -- [Aprende más sobre `ASCII`](http://conceptodefinicion.de/ascii/) - -## Consideraciones específicas - -1. Tu programa debe ser capaz de cifrar y descifrar tanto letras - mayúsculas como minúsculas. La fórmula para descifrar es: `(x - n) % 26` -2. Tu código debe estar compuesto por 2 funciones con los siguientes - nombres: `cipher` y `decipher` -3. El usuario no debe poder ingresar un campo vacío o que contenga números - -## Criterios de evaluación - -Se tomarán en cuenta las siguientes consideraciones a la hora de evaluar tu solución: - -1. Nombramiento de variables -2. Indentación -3. Validación de input: el usuario no debe poder ingresar un campo vacío o de tipo que no corresponda -4. Estructura de tus archivos -5. Archivo `README.md` correctamente redactado -6. Uso de comentarios para hacer tu código más legible -7. Que el programa cumpla con el propósito requerido +# CIFRADO Cesar +#### SE CREA DOS FUNCIONES + + +#SE CREA DOS FUNCIONES +1. Primera **function cipher(){** que se hace para cifrar y se hace una **var** lo nombramos **sentence** es igual a un **prompt("Ingrese la frase que desea cifrar ");** + + Se crea otra **var** nombrado **convertEncrypt** es igual a **sentence.split('');** +la **var** se nombra **pushEnncrypt** es igual aun array vacio **[];** +media un **for(var i** es igual **0;** **i**menor a **convertEncrypt.length;** i++){ +la **var** nombrado **newcharacterPosition** es igual **convertEncrypt[i].charCodeAt();** utilizamos la formula para encriptar **var** nombrado **characterPosition** es igual **((newcharacterPosition** menos **65** más **33)** modulo **26** más **65);** +devuelve una cadena creada mediante el uso de una secuencia de valores DE LA FORMULA QUE HICIMOS ARRIBA +**var pushPosition=characterPosition.String.fromCharCode(characterPosition);** + AHORA AGREGAMOS Y JUNTAMOS LO CIFRADO EN EL ARRAY VACIO + **pushEnncrypt.push(pushPosition) && pushEnncrypt.join(pushPosition)** +} + y **return pushEnncrypt()** +} + llamamos la funcion **cipher()** + +#SEGUNDA FUNCION QUE DECIFRA + +2. la **function** llamada **decipher(){** ENTRAR UN PROMPT PARA QUE EL USUARIO ME DEVUELVA LO QUE SE LE indica +con **var** nombrado **phrase** es igual **prompt("Ingresa lo que deseas decifrar");** +LOS CARACTERES INGRESADOS SE SEPARAN mediante un **var phraseSplit** es igual a **phrase.split();** +COLOCAMOS UN ARRAY VACIO PARA LUEGO EL DECIFRADO ENTRE **var pushDecipher** es igual a []; +MEDIANTE UN FOR LO QUE INGRESO EL USUARIO COMENZARA A CONTAR UNO POR UNO + **for (var i=0; i + + + + algoritmo de cifrado cesar + + + + + diff --git a/js/.eslintrc.js b/js/.eslintrc.js new file mode 100644 index 0000000..6d3d6f8 --- /dev/null +++ b/js/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + "env": { + "browser": true + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "warn", + 2 + ], + "linebreak-style": [ + "error", + "windows" + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ] + } +}; \ No newline at end of file diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..222f2de --- /dev/null +++ b/js/app.js @@ -0,0 +1,66 @@ +//crea una funcion que contiene la funcion a ejecutar si el usuario desea cifrar o descifrar una frase +function menu(option) { + //condicionamos cada opción + (option === 1) ? cipher() : (option === 2) ? decipher() : (option === 3) ? alert('HASTA PRONTO') : alert('No existe esa opcion'); +} +// Muestra mensaje al usuario +do { + var strMenu = 'BIENVENIDO AL CIFRADO CESAR \n **Escriba 1 para cifrar una frase \n **Escriba 2 para descifrar una frase \n **Escriba 3 para salir'; + //convierte a entero la opcion ingresada + var option = parseInt(prompt(strMenu)); + //llama a la funcion menu + menu(option); +}//hace esto mientras el usuario ingrese opciones del 1 al 3 y sea de tipo numerico +while (option != 3 && option != NaN); + + + +// SE CREA DOS FUNCIONES // +// PRIMERA FUNCION QUE CIFRE // +function cipher() { + // MEDIO DE UN PROMPT EL USUARIO DARA SU FRASE// + var sentence = prompt('Ingrese la frase que desea cifrar'); + // LA FRASE Y SEPARAMOS POR CADA CARACTER + var convertEncrypt = sentence.split(''); + // AGREGARE UN ARRAY VACIO PARA QUE ENTRE LOS CARACTERES ENCRIPTADOS + var pushEnncrypt = []; + // ENCRIPTAR UNO POR UNO MEDIANTE UN FOR + for (var i = 0; i < convertEncrypt.length;i++) { + // SE HACE UNA NUEVA variable QUE LA FRASE devuelve un número indicando + // el valor Unicode del carácter en el índice proporcionado + var newcharacterPosition = convertEncrypt[i].charCodeAt(); + // utilizamos la formula para encriptar + var characterPosition = ((newcharacterPosition - 65 + 33) % 26 + 65); + // devuelve una cadena creada mediante el uso de una secuencia de valores // DE LA FORMULA QUE HICIMOS ARRIBA + var pushPosition = String.fromCharCode(characterPosition); + // AHORA AGREGAMOS Y JUNTAMOS LO CIFRADO EN EL ARRAY VACIO + pushEnncrypt.push(pushPosition) && pushEnncrypt.join(pushPosition); + } + //retorna alerta con el texto encriptado + var info = alert('La frase encriptada es ' + pushEnncrypt.join('')) + +} +cipher(); + +// SEGUNDA FUNCION QUE DECIFRA +function decipher() { + // ENTRAR UN PROMPT PARA QUE EL USUARIO ME DEVUELVA LO QUE SE LE indica + var phrase = prompt('Ingresa lo que deseas decifrar'); + // LOS CARACTERES INGRESADOS SE SEPARAN + var phraseSplit = phrase.split(); + // COLOCAMOS UN ARRAY VACIO PARA LUEGO EL DECIFRADO ENTRE + var pushDecipher = []; + // MEDIANTE UN FOR LO QUE INGRESO EL USUARIO COMENZARA A CONTAR UNO POR UNO + for (var i = 0; i < phraseSplit.length; i++) { + // EL INDICE ES tODO LO QUE ENTRA EL USUARIO + var newDecipher = phraseSplit[i]; + // SE PONE LA FORMULA PARA DECIFRARLO + var starDecipher = (newDecipher - 33) % 26; + // EL RESULTADO SE AGREGA Y JUNTA LOS CARACTERES AL ARRAY VACIO + pushDecipher.push(starDecipher) && pushDecipher.join(starDecipher); + } + //retorna alerta con el texto desencriptado + var info = alert('La frase desencriptada es ' + pushDecipher.join('')) + +} +decipher();