JavaScript - Desifrar el mensaje

 
Vista:

Desifrar el mensaje

Publicado por Gisela (2 intervenciones) el 10/04/2021 01:21:00
Buenas quiero resolver la siguiente funcion, que es lo que está mal

1
2
3
4
5
6
7
8
9
function laClaveSecreta(letras){
 let clave = "";
for(let i = 0 ; i <= letras.length -1; i--){
clave += letras.length -1[i];
}
return (clave)
}
 
console.log clave( ["a", "*", "d", "a", "r", "f", "*", "i", "c", "*", "s", "e", "d", " ", "e", "*", "v", "a", "l", "C"] )

"Clave descifrada"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 183
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Desifrar el mensaje

Publicado por Yamil Bracho (78 intervenciones) el 10/04/2021 03:15:46
Si observas la frase a descrifrar, esta reversada asi que tu for debe ser desde el ultimo elemento hasta el primero

1
2
3
for(let i = letras.length -1 ; i >= 0; i--) {
   ...
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Desifrar el mensaje

Publicado por Gisela (2 intervenciones) el 10/04/2021 03:42:43
me arroja lo siguiente por console.log
Clav*e des*ci*fradCa
en el if ( ) que debería colocar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Desifrar el mensaje

Publicado por Gio (79 intervenciones) el 10/04/2021 04:32:57
Buenas Gisela, el código que buscas es el siguiente:

1
2
3
4
5
6
7
8
9
function secreto(letras){
    let clave = "";
    for(let i=letras.length-1; i>=0; i--){
        if(letras[i]!="*") clave+=letras[i];
    }
    return clave;
}
 
console.log(secreto(["a", "*", "d", "a", "r", "f", "*", "i", "c", "*", "s", "e", "d", " ", "e", "*", "v", "a", "l", "C"]));

Cambié el nombre de tu función a secreto() ya que es mas corto.
Agregué un filtro (línea 4) dentro del ciclo for para eliminar los asteriscos (*).


Los ciclos for cuando trabajan de forma descendente (decrementando i con i--) empiezan desde el final (tuArray.length-1) y terminan en el principio (posición o puntero [0] de tuArray). Por lo general, dentro de los ciclos for se suele trabajar con tu array en su posición i.

Estar colocando [ "i", "s", "a", " ", "e", "j", "a", "s", "n", "e", "m", " ", "u", "T" ] es un poco incomodo, sería mejor si introduces "isa ejsnem uT" en tu función clave() para que descifre el mensaje. Para ello hice una simple modificación en la línea 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function secreto(letras){
    letras=letras.split("");
    let clave = "";
    for(let i=letras.length-1; i>=0; i--){
        if(letras[i]!="*") clave+=letras[i];
    }
    return clave;
}
 
// EJEMPLO PARA DESCIFRAR MENSAJE:
console.log(secreto("a*darf*ic*sed e*valC")); //SE ESCRIBIRA EN CONSOLA: Clave descifrada
 
// EJEMPLO PARA SIFRAR EMNSAJE:
console.log(secreto("Mi mensaje")); //SE ESCRIBIRA EN CONSOLA: ejasnem iM

La función split("") convierte una cadena de texto en un array (lo fragmenta). Por ejemplo el texto "Hola" al aplicarle la función split("") de la siguiente forma "Hola".split("") y obtenemos como resultado el array [ "H", "o", "l", "a" ].

Gracias a esa pequeña modificación, obtenemos una función capaz de cifrar y descifrar mensajes (cumplir las dos funciones en una sola).

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar