Skip to content
This repository was archived by the owner on Jan 8, 2020. It is now read-only.

Cifrado Cesar #67

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -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
}
}
112 changes: 65 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,75 @@
# Cifrado César
# **CIFRADO CÉSAR**
En este proyecto nos piden realizar lo siguiente.

> Recuerda seguir siempre esta [guía de estilos](https://github.com/Laboratoria/js-style-guide/)
+ Que al ingresar una frase este pueda decifralo con el _Cifrado cesar_, esto quiere decir que busque la posicion de la frase en el lenguaje `ASCII`.
+ que devuelva minúscula o mayúscula.

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**
> ## Pseudocodigo del Cifrado César

Por ejemplo:
### Primero
------
Se crea una funcion _cifrar_.
`function cipher ()`{
Dentro de la función se crea una variable que contendra un mensaje, y como nos piden ingresar mayúscula y munúscula, le colocaremos dos metodos.
`var alfabeto` = **prompt("Ingresa el alfabeto").toUpperCase().toLowerCase();**
## Segundo
----
Una variable en donde se depositará los elementos convertidos a un _string_ llamado:
**var newArray = alphabet.split("");**
## Tercero
----
Y por último el array con los nuevos valores; `var newAlphabet = [];`
Realizaremos un bucle con for.
Para ello realizaremos un ciclo `(i=0; i<newArray.length; i++)`
si cumple, se buscara su locacion en el nuevo array
`newArray[i].charCodeAt();`. Para ello utilizaremos la formula del _**Cifrado César**_ .
La formula seria la siguiente: `var locationTwo =((location - 65 +33)%26 + 65);`
En la variable codigo se guardara la letra encriptada: var code = String.fromCharCode(locationTwo);
Y en la variable newAlphabet.push(code); se almacenara la nueva ubicacion pero como estring. Para que me debuevla sin string utilizaremos el metodo join return newAlphabet.join("").

- Texto original: `ABCDEFGHIJKLMNOPQRSTUVWXYZ`
- Texto codificado: `HIJKLMNOPQRSTUVWXYZABCDEFG`

## Entregables
> # Código de Cifrado César

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`
```js
//crearemos la primera funcion para cifrar
function cipher (){
// dentro de ella crearemos las variables.
var alphabet = prompt("Ingresa el alfabeto").toUpperCase().toLowerCase();
var newArray = alphabet.split("");
// en la nueva varible newAlphabet se colocara los elementos nuevos
var newAlphabet = [];
// realizaremos un bucle con for.
for (i=0; i<newArray.length; i++){
// dentro del for realizarmos la condicion pedida, para ello crearemos un var
//de la locacion del alfabeto.
var location = newArray[i].charCodeAt();
var locationTwo =((location - 65 +33)%26 + 65);
var code = String.fromCharCode(locationTwo);
newAlphabet.push(code);
}
// con un return para retornar el cifrado
return newAlphabet.join("")
}
cipher() ```

## Tips
```js
function decipher() {
// Descifrando la palabra cifrada
for (j=0; j<newAlphabet.length; j++){
// dentro del for realizarmos la condicion pedida, para ello crearemos un var
//de la locacion del alfabeto.
var cifri = [];
var position1 = newAlphabet[j].charCodeAt();
var position2 =((position1 +33)%26 +65 );
var codeTwo = String.fromCharCode(position2);
cifri.push(codeTwo);
}
return(cifri.join(""));
}
decipher();

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:
Link del Diagrama de Flujo.

- [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
![Diagrama de flujo](https://code2flow.com/XgSGAP.png).
12 changes: 12 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cifrado César</title>
</head>
<body>
<script type="text/javascript" src = "app.js">

</script>
</body>
</html>
35 changes: 35 additions & 0 deletions js/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/* crearemos la primera funcion para cifrar*/
function cipher() {
/* dentro de ella crearemos las variables*/
var alphabet = prompt("Ingresa el alfabeto").toUpperCase();
var newArray = alphabet.split("");
// en la nueva varible newAlphabet se colocara los elementos nuevos
var newAlphabet = [];
// realizaremos un bucle con for.
for (i=0; i<newArray.length; i++) {
// dentro del for realizarmos la condicion pedida, para ello crearemos un var
// de la locacion del alfabeto.
var location = newArray[i].charCodeAt();
var locationTwo =((location - 65 +33)%26 + 65);
var code = String.fromCharCode(locationTwo);
newAlphabet.push(code);
}
// con un return para retornar el cifrado
return newAlphabet.join("");
}

cipher();
function decipher() {
// Descifrando la palabra cifrada
for (j=0; j<newAlphabet.length; j++) {
// dentro del for realizarmos la condicion pedida, para ello crearemos un var
// de la locacion del alfabeto.
var cifri = [];
var position1 = newAlphabet[j].charCodeAt();
var position2 =((position1 +33)%26 +65 );
var codeTwo = String.fromCharCode(position2);
cifri.push(codeTwo);
}
return (cifri.join(""));
}
decipher();