desafíos

Felíz Día De La Gran Capicúa

El 2 de febrero de cada año se celebra en Estados Unidos el “Día de la Marmota”. Pero hoy tiene una gracia particular. No importa la forma en que lo expresemos la actual fecha, 2 de febrero de 2020, obtenemos siempre un palíndromo: 02-02-2020 o 2020-02-02, pero como ya aclaramos antes, cuando se trata de números les decimos capicúas. En los dos últimos posts hemos estado calculando capicúas y dejamos un desafío la semana pasada, cuya solución publicaré más tarde.

Calculando Capicuas

Ha llegado el momento de revisar la solución al desafío de la semana pasada. Recordemos que el objetivo es encontrar las capicúas de los números del 12 al 99. Al plantear el desafío dijimos: Se obtiene una capicúa de un número sumando el número con su reverso hasta obtener una capicúa, por ejemplo, para el número 57: 57 + 75 = 132 + 231 = 363 Este desafío recibió dos soluciones, la de Rodrigo C.

Desafío: Capicúas

Un palíndromo1 es una palabra o frase que se lee igual en un sentido que en otro (por ejemplo ANILINA). Cuando se trata de números se llaman capicúas (por ejemplo 1221)2. Mañana será 20 de enero de 2020, o 20-1-20, ¡una capicúa! Se obtiene una capicúa de un número sumando el número con su reverso hasta obtener una capicúa, por ejemplo, para el número 57: 57 + 75 = 132 + 231 = 363 Por lo tanto decimos que la capicúa de 57 es 363.

Solucion Desafio Primes-Crypto

Antes que termine el día les entrego la solución al desafío del 15 de diciembre: Primes-Crypto. Antes de continuar quería mencionar que esta forma de cifrar la descubrí leyendo el cuento de ciencia ficción de Frederick Pohl titulado “El Oro al Final del Arco Estelar” (The Gold at the StarBow's End), publicado en 1972. Cifrado con números primos Lo primero es explicar el algoritmo para cifrar que fue el que usé para plantear el desafío, el código en Rust es el siguiente:

Desafío Primes Crypto

Los números primos son usados en criptografía de varias maneras, pero principalmente para generar claves. Hay una forma de codificar bien ingeniosa, que no se usa mucho pues sólo permite operar con mensajes muy cortos y requiere mucho esfuerzo de computación. Se las voy a describir a continuación. Lo primero es definir nuestro alfabeto, para efectos de este desafío definiremos el alfabeto como las letras minúsculas del alfabeto inglés, esto es un conjunto de 26 caracteres:

Solucion Desafio Crackeando Claves

El desafío de la semana pasada era una invitación para volver a plantear retos de programación en este sitio. Es natural que no tuviera tantas respuestas, puesto que estuvimos mucho tiempo sin publicar nada en este blog. Pero aún así hubo tres respuestas que revisaremos más adelante. Ahora les entregaré la respuesta a ese desafío. El desafío consistía en deducir cuales eran los números de 4 dígitos que corresponde a estos cinco hashes SHA-512

Nuevos Desafios

Nuevos Desafíos Unos años atrás empecé este blog con el fin de escribir de manera dedicada sobre programación, de un modo más detallado y técnico de cómo lo hacía en mi blog principal, “La Naturaleza del Software”. Hoy empieza una nueva era de este sitio, que retomaremos con una sección que fue bien popular, los desafíos de programación. Cada semana trataré de publicar un problema con el desarrollo de su solución en algún lenguaje de programación, el que será compartido en un Gist o algún repositorio en gitHub para que lo analicen.