Algoritmo de cifrado César en Ruby

Algoritmo de cifrado César en Ruby

Anteriormente vimos el cifrado César en C y el cifrado César en Python. No explicaré detalladamente cómo funciona el algoritmo pues a ello ya le dediqué otro post.

Lo que nos reúne aquí hoy es la implementación del algoritmo de “cifrado” César en el lenguaje de programación Ruby.

Algoritmo de cifrado César en Ruby

Algoritmo de cifrado César en Ruby

Al final vamos a crear una función que cifra y descifra según el cifrado de César, con un número de rotaciones definido por nosotros.

(más…)

Leer y escribir archivos CSV con Ruby

Leer y escribir archivos CSV con Ruby

En este post explicaré cómo trabajar con CSV desde el lenguaje de programación Ruby. Vamos a leer un archivo CSV (archivo separado por comas u otro delimitador) y también a escribir contenido a un nuevo archivo.

Leer y escribir archivos CSV con Ruby

Leer y escribir archivos CSV con Ruby

Nota: la foto del código fue tomada con Polacode y la marca de agua colocada con WaterPy.

Te invito a leer antes cómo escribir y leer archivos en Ruby, para que no te confundas al leer los ejercicios aquí presentados.

(más…)

Ordenar arreglos en Ruby, arreglos de cadenas y numéricos de forma ascendente y descendente

Ordenar arreglos numéricos y de cadenas con Ruby

Hoy veremos cómo ordenar o sortear los arreglos en Ruby. Vamos a trabajar con arreglos de cadenas (strings) y arreglos numéricos (enteros o flotantes); además de que vamos a ver cómo ordenar a los arreglos de manera ascendente y descendente.

Ruby provee un operador interesante que recientemente fue introducido en PHP, el cual es llamado operador nave espacial (quién sabe por qué, yo no le encuentro mucho parecido) y se representa así:

 <=>

Ordenar arreglos en Ruby, arreglos de cadenas y numéricos de forma ascendente y descendente

Ordenar arreglos en Ruby, arreglos de cadenas y numéricos de forma ascendente y descendente

Por  cierto, la foto del código fue tomada con Polacode y le puse la marca de agua con WaterPy.

La peculiaridad de este operador es que evalúa dos valores y regresa 1, 0 o -1 dependiendo de que si uno es mayor, igual o menor al otro. Ya veremos en los ejemplos, el punto es que con esto podemos ordenar y comparar con pocas líneas de código.

(más…)

Fibonacci recursivo y con ciclos en Ruby

Sucesión fibonacci con recursividad y ciclos en Ruby

Siguiendo con los algoritmos y ejercicios resueltos en Ruby, vamos a ver hoy cómo obtener el número fibonacci que va en determinada posición.

Fibonacci recursivo y con ciclos en Ruby

Fibonacci recursivo y con ciclos en Ruby

Por ejemplo, el número de la sucesión fibonacci que va en la posición 7 (recordemos que comienza desde cero) es el 13, pues la sucesión va así:

0, 1, 1, 2, 3, 5, 8, 13

Lo que haremos con Ruby será recibir un número y regresar el número fibonacci que va en esa posición; lo haremos de forma recursiva y también usando ciclos.

Nota: las funciones no imprimen la sucesión, pero basta con que dentro de cada una de ellas se imprima el valor con puts y listo, la sucesión será impresa.

(más…)

Saber si es Anagrama con Ruby

Comprobar si una cadena es anagrama de otra en Ruby

Un anagrama es una frase o palabra cuyas letras, al acomodarse de otra manera, forman otra palabra válida. Eso sí, ninguna letra debe faltar o sobrar.

Saber si es Anagrama con Ruby

Saber si es Anagrama con Ruby

Por mencionar un ejemplo de anagrama es la palabra Enfriamiento, que es anagrama de Refinamiento; ya que ambas tienen las mismas palabras y al ordenarlas de distinta manera se forma otra.

Pues bien, hoy veremos cómo comprobar si una palabra es anagrama de otra en Ruby. Esto funcionará tanto como cadenas que representen palabras hasta con cadenas que representen oraciones largas.

(más…)

Palíndromo en Ruby

Comprobar si es un palíndromo en Ruby

Los palíndromos son palabras u oraciones que se leen igual de derecha a izquierda y de izquierda a derecha. Un ejemplo simple es la palabra oso, uno complicado es La ruta natural.

Para comprobar si es palíndromo en Ruby o cualquier otro lenguaje, primero es necesario quitar espacios y comas, así como convertir la palabra a minúscula.

Palíndromo en Ruby

Palíndromo en Ruby

Veamos entonces la codificación del algoritmo para comprobar si una palabra, string u oración es palíndromo de otra palabra.

(más…)

Comprobar si una cadena es anagrama de otra en C

Comprobar si una palabra es anagrama de otra en C

En este post pondré la función para ver si una cadena es anagrama de otra usando C.

Las cosas con C son más complicadas, pero a su vez más interesantes. Todo esto es porque C es un lenguaje de programación que es fuertemente tipado y que no tiene un recolector de basura ni esas cosas que otros tienen.

Comprobar si una cadena es anagrama de otra en C

Comprobar si una cadena es anagrama de otra en C

Personalmente me gusta resolver ejercicios con C, pues siempre suponen un reto. Por eso es que hoy veremos cómo saber si dos cadenas o palabras son anagramas utilizando el lenguaje de programación C.

(más…)

Remover caracteres de una cadena en C

Remover caracteres de una cadena en C

C nunca deja de sorprenderme, pues cada cosa que se ve sencilla en otros lenguajes de programación se hace complicada aquí. Hoy toca el turno de un algoritmo para quitar caracteres de una cadena en C.

Esto también puede ser interpretado como quitar letras de una palabra usando C. Por ejemplo, si a la frase “Me gusta programar en C” le quitamos los caracteres o letras a y e se convierte en “M gust progrmr n C“.

Remover caracteres de una cadena en C

Remover caracteres de una cadena en C

La función que he escrito remueve los caracteres de una cadena, sin importar si son signos de puntuación u otras cosas. Es decir, esto también funciona para:

  • Remover espacios de una cadena
  • Quitar comas y signos de puntuación de una cadena
  • Remover saltos de línea

Vamos a ver cómo es su programación y su uso.

(más…)

Minutos a tiempo legible en JavaScript

Convertir minutos a texto legible en JavaScript

En un sistema web en el que he estado trabajando tuve la necesidad de convertir minutos a su representación como texto, en cantidades más grandes. Por ejemplo, 59 minutos son 59 minutos, pero 60 minutos son 1 hora, así que en lugar de mostrarlos como minutos, se muestran como horas.

Minutos a tiempo legible en JavaScript

Minutos a tiempo legible en JavaScript

La función que escribí puede convertir cualquier número de minutos a su representación como horas, días, semanas, meses o años. Con los ejemplos veremos de lo que hablo.

(más…)

Algoritmo para calcular factorial en JavaScript

Factorial de un número en JavaScript con recursividad y ciclos

En este post vamos a ver cómo calcular el factorial de un número en JavaScript de dos maneras distintas. Una de ellas es usar un ciclo para calcular el factorial, y la otra es usando la recursividad o recursión.

Algoritmo para calcular factorial en JavaScript

Algoritmo para calcular factorial en JavaScript

También veremos el cálculo del factorial de un número usando a BigInt, un nuevo tipo de dato para JavaScript.

(más…)

Cifrado César en C

Algoritmo de cifrado César en C

Anteriormente vimos cómo implementar el algoritmo de cifrado de César en Python, ahora veremos cómo cifrar y descifrar una oración usando el cifrado César igualmente, pero en el lenguaje de programación C.

Implementar el algoritmo en C es un poco más complicado que en otros lenguajes, sobre todo por la manipulación de cadenas, pero eso no es un impedimento.

Cifrado César en C

Cifrado César en C

Veamos entonces cómo codificar el algoritmo de cifrado César en C.

(más…)

Equivalentes a ord y chr en C

Hoy estaba trabajando con C y al buscar las funciones ord y chr (como las que existen en Python) me di cuenta de que no existen.

Todo esto es debido a que ord y chr podrían ser fácilmente remplazadas por operaciones del lenguaje, pues al final, una variable de tipo char es un entero. Lo que explico es lo que vimos cuando convertimos un entero a carácter, o un carácter a entero.

Veamos cómo podemos tener un equivalente a chr y ord en C.

(más…)

Explicación del cifrado César

Este cifrado utiliza un cifrado por sustitución, en donde cada letra es remplazada por otra que se encuentre a N posiciones de distancia. Por poner un ejemplo, si se rota 1 vez, los resultados son:

Cadena original: parzibyte

Cadena rotada: qbsajczuf

La sustitución se hace hacia la derecha. La p se convierte en q, la a en b y así sucesivamente. Para decodificar se rota hacia la izquierda con el mismo número de rotaciones; la q se convierte en p, la b en a y así hasta terminar.

Puedes leer más en la wikipedia, pero en resumen, Julio César lo usaba rotando 3 veces las letras. Se supone que en aquellos tiempos poca gente sabía leer, y la que sabía leer no se imaginaba cómo hacer el criptoanálisis.

(más…)