Hola a todos, hoy le mostraré el primer proyecto que me han propuesto, para los que no saben, estudio Computación en la Universidad Central de Venezuela, y los proyectos que les mostraré, son de programación, con enunciados geniales que te atrapan y emocionan, por ejemplo este que les mostraré, es basado en la serie Mr. Robot y va así.
Elliot Anderson es un jover hacker que sufre de fobia social, depresión clínica, delirios y paranoia. Trabaja durante el día como ingeniero de seguridad social informática en una empresa llama "Allsafe" y en la noche se dedica a hackear a sus amigos y conocidos, con el fin de protegerlos. Además de hackear a sus amigos y conocidos también hackea a otras personas que para él sean sospechosas y si han cometido algún crimen los entrega a la policía.
Con esto ya sabemos de que trata una parte de la serie, para los que no saben (como yo xd), y hace que el proyecto no sea solo programar, sino que tiene un contexto interesante, ahora vayamos a la parte de la serie relacionada con el proyecto.
Elliot al hackear a una persona guarda toda su información en un CD, desea que lo ayuden en su tarea de guardar la información en el CD de manera segura y decide contactar a los alumnos de Algoritmos y Programación para que lo ayuden a encriptar y desencriptar las palabras que se encuentren en los archivos que él guarda.
Ya con esto tenemos nuestro objetivo, encriptar y desencriptar palabras, ahora veremos que debemos hacer en cada caso. Nos indican que al comienzo del programa, se le señalará a este mismo con una palabra, que acción debe realizar ("encriptar" o "desencriptar" ) .
CASO ENCRIPTAR
La siguiente línea será una cadena de caracteres de tamaño T (donde T es: 1<=T<=4), en caso de que no cumpla, se debe imprimir "ERROR" y finalizar el programa.
Toda cadena de entrada debe ajustarse a una longitud de 4 caracteres, en caso de que sea menor a 4, se debe rellenar con espacios a la izquierda (ejemplo: "sal" -> " SAL" ) .
Transformar cada letra de la cadena a un número decimal desde el 1 a 26, cada letra del abecedario representa un número decimal donde 1 corresponde a la letra "a" y 26 corresponde a la letra "z" (no existe la "ñ" ) . En caso de sea un carácter alfabético distinto al especificado debe imprimir "ERROR" y finalizar el programa.
Ahora les mostraré la tabla de cambio, donde las letras se convierten en el número correspondiente.
Despues, transformar cada número que representa a una letra en su equivalente en binario con 5 bits.
Esto tambien depende de una tabla que tambien se las adjunto.
Y como último paso, se debe invertir toda la cadena (pasar los 0's a 1's y viceversa).
Veamos un ejemplo con la palabra abaz:
CASO DESENCRIPTAR
La siguiente línea de entrada es una cadena de bits de tamaño "20", si no tiene el tamaño especificado o no una cadena de 0's y 1's, debe imprimir "ERROR" y finalizar el programa.
Invertir los bits.
Transformar cada 5 bits en un número decimal entre 0 y 26.
Transformar cada número decimal a una letra según la tabla anterior.
Ejemplo:
Ahora veamos como debe ser la entrada y salida del codigo con una definición mas formal.
ENTRADA
La primera línea que recibe es una cadena que puede tener solo 2 valores: "encriptar" o "desencriptar".
Si el valor de la cadena es "encriptar", la siguiente línea será una cadena de tamaño T (con T igual a: 1<=T<=4)
Si el valor de la cadena es "desencriptar", la siguiente línea será una cadena de tamaño 20.
SALIDA
Si la primera línea de entrada es "encriptar", deberá imprimir una única línea con una cadena de bits de tamaño 20, que representa la cadena de entrada encriptada.
Si el valor de la cadena es "desencriptar", deberá imprimir una única línea con una cadena de caracteres de tamaño T que representa el valor real de la cadena.
En caso de algún error de validación debe imprimir "ERROR".
Con esto nos dicen de manera indirecta que tenemos que validar cada dato de una forma u otra (no nos lo enseñaron, así que nos enseñan algo más importante, investigar para resolver problemas, la vida de un programador xd). Ahora les mostraré varios ejemplos de como deben estar la entrada y salida del programa.
Y con esto ya tenemos toda la información del proyecto a realizar, nos pidieron que el proyecto debe ser implementado en python 3, un lenguaje de programación muy bueno para empezar en la programación.
Espero que les haya gustado el post, pueden agradecer el exfuerzo con un comentario de que les pareció el post, los puntos no son necesarios, pero sirven para que mas gente vea el post, así que se los agradecería, y si desean hacer el proyecto, con gusto podría ayudarles o algo, compartan si les gustó, nos vemos en la proxima :3
Si quieren aprender python, les dejo mi curso de python: