Skip to content

Commit a8dd7f6

Browse files
committed
se agrega seccion de dudas
1 parent a3898a0 commit a8dd7f6

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Dudas/cesar.rkt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#lang racket
2+
3+
; Define la función principal que realiza el cifrado César
4+
(define (cesar-encrypt text shift)
5+
(if (string=? text "") ; Verifica si la cadena de texto está vacía
6+
"" ; Si está vacía, retorna una cadena vacía
7+
; Si no está vacía, concatena el carácter cifrado con el resto de la cadena cifrada
8+
(string-append (cesar-shift (string-ref text 0) shift) ; Obtiene el primer carácter de la cadena y lo cifra
9+
(cesar-encrypt (substring text 1) shift)))) ; Recursivamente cifra el resto de la cadena
10+
11+
; Define la función que realiza el cifrado César en un solo carácter
12+
(define (cesar-shift char shift)
13+
(define base (if (char-upper-case? char) 65 97)) ; Define el código ASCII base dependiendo si el carácter es mayúscula o minúscula
14+
(if (char-alphabetic? char) ; Verifica si el carácter es alfabético
15+
; Si es alfabético, realiza el cifrado César y retorna el carácter cifrado
16+
(string (integer->char (+ base (modulo (+ (- (char->integer char) base) shift) 26))))
17+
(string char))) ; Si no es alfabético, retorna el carácter sin cambiar
18+
19+
; Probar la función de cifrado
20+
(displayln (cesar-encrypt "mundo" 13))
21+
22+
; La función cesar-encrypt se encarga de recorrer cada carácter de la cadena de entrada y aplicarle
23+
; el cifrado César. Esta función utiliza un enfoque recursivo. En cada paso de la recursión, se toma
24+
; el primer carácter de la cadena, se cifra y se concatena con el resultado de la encriptación del
25+
; resto de la cadena. Esto se repite hasta que todos los caracteres de la cadena se han cifrado.
26+
27+
; La función cesar-shift realiza el cifrado César para un solo carácter. En primer lugar, determina si
28+
; el carácter es una letra mayúscula o minúscula para establecer el código ASCII base (65 para mayúsculas
29+
; y 97 para minúsculas). Luego, si el carácter es una letra (alfabético), se le aplica el cifrado César; si no, se deja sin cambios.
30+
31+
; El cifrado César en sí se realiza sumando el desplazamiento al valor ASCII del carácter,
32+
; sustraído el valor base para mantener el valor dentro del rango alfabético. Luego, se aplica
33+
; la operación de módulo por 26 (el número de letras en el alfabeto) para asegurar que el cifrado
34+
; es cíclico, es decir, después de 'z' o 'Z', el cifrado sigue con 'a' o 'A'. Luego se agrega el valor
35+
; base nuevamente y se convierte el valor numérico resultante de nuevo a un carácter.

0 commit comments

Comments
 (0)