Archivo para la categoría “Matemáticas y números”

El cifrado César o por desplazamiento es una de las formas más simples de ocultar mensajes, aunque también una de las más fáciles de descifrar. El método no tiene más misterio que desplazar cada letra un número determinado de posiciones dentro del alfabeto de forma cíclica, es decir, si se llega al final se vuelve a empezar por el principio. Por ejemplo, con un desplazamiento de 3 posiciones a la derecha.

Alfabeto sin cifrar: ABCDEFGHIJKLMNÑOPQRSTUVWXYZ.
Alfabeto cifrado: DEFGHIJKLMNÑOPQRSTUVWXYZABC.

Texto sin cifrar: Estoy leyendo Okashini
Texto cifrado:
Hvwrb ohbhqgr Rndvklql

El origen del cifrado lo encontramos hace más de 2.000 años. Corría el siglo I a.C cuando Julio César utilizó este cifrado con un desplazamiento de 3 posiciones a la derecha para ocultar mensajes en tiempos de guerra.

El descifrado es igual de sencillo si se conoce el número de desplazamientos que hay que realizar. Si no se conoce hay que trabajar algo más, aunque solamente habría que probar todas las combinaciones posibles, probando las primeras palabras hasta encontrar alguna frase coherente, y después traducir todo el texto. Podrían parecer demasiadas combinaciones, pero en el caso de nuestro alfabeto actual son solamente 27 posibilidades, pocas en comparación con otros cifrados. ¿Os imagináis que hubiera la misma cantidad que kanjis japoneses o hanzis chinos?

  • Vjkf vj le kvokf tzwiruf r kirmvj uvc dvkfuf Tvjri tfe 43 gfjztzfevj uv uvjgcrqrdzvekf r cr uvivtyr.

¿Podéis descifrarlo?

Como curiosidad, este cifrado se utiliza para otros más complejos como el de Vigenère.

¿Conocéis otros sistemas de cifrado?

Para los más técnicos, os dejo un programa en C++ que codifica textos.

// Cifrado César
// No se cifran letras con tilde, ñ, ç, ...

#include <iostream>
#include <string>
using namespace std;

void cesar(const string& s, int n) {
    for(int i = 0; i < s.size(); ++i) {
        char c = s[i];
        if(c >= 'a' and c <= 'z') {                         // Minúsculas
            if(c+n>'z') cout << char('a'+c+n-'z'-1);
            else cout << char(c+n);
        }
        else if(c >= 'A' and c <= 'Z') {                    // Mayúsculas
            if(c+n>'Z') cout << char('A'+c+n-'Z'-1);
            else cout << char(c+n);
        }
        else cout << c;
    }
}

int main() {
    int n;                  // Número de posiciones a desplazar
    cin >> n;
    n %= 26;
    string s;
    while(cin >> s) {
        cesar(s, n);
        cout << ' ';
    }
    cout << endl;
}
Etiquetas: ,

Comments Sin comentarios »

Santa Claus, el gordo barbudo, ¿existe? la física no dice que no directamente sin proponerse un estudio sobre este ser. Y aquí están las conclusiones.

1. Ninguna especie conocida de reno puede volar, pero hay 300.000 especies de organismos con vida que aún no han sido clasificados, muchos de ellos insectos y gérmenes. Muchos, que no todos. Esto no excluye que pueda haber renos con la capacidad de elevarse hacia el cielo.

2. Hay 2.000 millones de niños (personas con menos de 18 años) en todo el planeta. Pero como Santa Claus no da regalos a musulmanes, hindúes, judíos o budistas (xenofobia?), eso reduce el trabajo hasta un 15% aproximadamente (378 millones). Con una media de 3.5 niños por casa, según el censo, eso significa que Santa tendría que visitas unos 91.8 millones de hogares. Intentemos pensar que hay por lo menos un niño que ha sido bueno en cada uno de ellos, si no tendríamos que reducir ese número…

3.Santa Claus tiene 31 horas de navidad para trabajar, gracias a las diferencias horarias y asumiendo que viaja de este a oeste, lo más lógico.
Eso signica que tiene que visitar 822.6 casas por segundo. Es decir, el gordito tiene una milésima parte de segundo para llegar a la casa cristiana (con un niño bueno), aparcar, salir del trineo, bajar por la chimenea, llenar los calcetines, distribuir los regalos restantes bajo el árbol, comerse los regalos que le han dejado a él (vaya empacho), subir por la chimenea, subirse de nuevo al trineo y ir a visitar la siguiente casa.
Asumiendo que esas 91.8 millones de casas estan regularmente distribuidas por el planeta (falso, pero podemos aceptarlo en nuestros ‘cálculos’), estamos hablando ahora de una distancia de separacion de 125.5 kilómetros por cada parada, un viaje total de 121.5 millones de kilómetros, sin contar las paradas de lo que nosotros ya sabemos, comer, etc…

Esto significa que el trineo del gordo se mueve a 1046 Km/s (3.765.600 Km/h), unas 3.000 veces la velocidad del sonido, o 300 veces menor a la de la luz. Para comparar, el vehículo más rápido construido por el hombre (el ulyses space probe), se mueve a 44.1 Km/s (unos 158.760 Km/h). Un reno convencional (no el volador) puede correr a 24 kilómetros por hora.

4.La carga en el trineo añade otro elemento interesante. Asumiendo que cada niño recibiera nada más que un paquete mediano de lego (1 Kg aprox.), el trineo tendría que aguantar un peso de 321.300 toneladas, eso sin contar al ya mencionado gordito.
En tierra, un reno convencional puede llevar un máximo de 136 Kg. Si suponemos que el super-reno volador pudiera llevar 10 veces más peso (1360 Kg), necesitaríamos 214.200 renos. Esto aumenta el peso, sin contar el peso del trineo, a 356.430 toneladas. De neuvo, para comparar, es cuatro veces el peso de el Queen Elizabeth (un barco).

5. 356.000 toneladas a 1.056 Km/s crea una gran resistencia al aire, que provocará que los renos reciban un calor proporcional al de una nave eespacial entrando en la atmósfera terrestre.

Resumiendo, los primeros renos se incendiarían casi instantaneamente, exponiendo a la resisntecia a los de detrás, causando, también, explosiones sónicas a su paso. Todos los renos habrían sido vaporizados en menos de 4.26 milésimas de segundo.

mientras, Santa Claus estaría recibiendo una fuerza de 17500.06G. Un Santa de unos 100 Kg (algo no muy gordo) sería llevado hasta el final de su trineo con una fuerza de 1957257 Kg.

En conclusión, es físicamente imposible que alguien aguante esas fuerzas, a parte de que Santa Claus fuera un robot, como en Futurama.

Vía: Traducción y adaptación de Physlink (El cambio de medidas puede alterar los resultados)

Etiquetas: ,

Comments Sin comentarios »

16: Es el único número donde X^Y=Y^X, siendo X y Y enteros distintos.
28: Es el 2º número perfecto
53: Único número de dos cifras que se escribe opuesto en hexadecimal
94: Es un número de Smith
135: 1^1+3^2+5^3
198: 11 + 99 + 88
240: Es el número más pequeño con 20 divisores
9945: 17!!!!

Vía: Stetson (Inglés). Curiosidades de números del 0 hasta el 9999, hasta cansarte.

Etiquetas: , ,

Comments Sin comentarios »