Lista ligada en C++ - Programación y estructura de datos

Lista ligada en C++

Hoy te enseñaré cómo implementar una lista ligada en el lenguaje de programación C++ también conocido como CPP.

Además de mostrarte la clase Lista y la clase Nodo, te enseñaré las operaciones que podemos realizar con ella. Son las siguientes:

  • Recorrer la lista imprimiendo los valores
  • Verificar si un elemento existe dentro de la lista
  • Eliminar un elemento de la lista ligada en C++
  • Crear una nueva lista sin elementos repetidos (eliminar duplicados)

Todo esto usando C++ e implementando los métodos y algoritmos manualmente. Por cierto, en este caso el tipo de dato que vamos a almacenar será un int pero fácilmente puedes cambiarlo a cualquier otro tipo de dato.

(más…)

Palíndromo recursivo y con while en Python - Programación

Palíndromo en Python

En este post de programación en Python te enseñaré a resolver un ejercicio sobre cómo saber si una palabra o frase es palíndroma o si es un palíndromo.

Se dice que una cadena es palíndroma cuando se lee igual de derecha a izquierda que de izquierda a derecha, quitando espacios y acentos.

Por ejemplo, si fuéramos estrictos, la frase “Isaac no ronca así “ no es un palíndromo por los acentos y espacios, pero si se los removemos queda como “isaacnoroncaasi” y esa string sí es un palíndromo.

Entonces vamos a ver un programa de Python que nos dirá si una cadena es o no palíndroma, opcionalmente removiendo los espacios y acentos. Además, vamos a ver dos enfoques: el recursivo y el que utiliza ciclos.

(más…)

Máximo común divisor en Python

Python – Máximo común divisor

Hoy vamos a ver cómo obtener el máximo común divisor de dos números usando el lenguaje de programación Python.

Usaremos Python para escribir dos funciones que nos van a ayudar a calcular el MCD de dos números, una recursiva y otra usando el ciclo while.

Recuerda que el máximo común divisor de dos números es el entero máximo que puede dividir a dos números sin dejar residuo.

Por ejemplo, el máximo común divisor de 6 y 20 es 2, ya que no hay número mayor que pueda dividir a ambos números (ya que el 3 puede dividir al 6 pero no al 20).

Veamos cómo resolver este ejercicio de programación con Python a través del algoritmo de Euclides.

(más…)

Cálculo de factorial en Python

Factorial en Python

En este post te mostraré cómo obtener el factorial de un número usando Python. Vamos a ver dos métodos: de manera iterativa con un ciclo, y de manera recursiva en donde la función se llama a sí misma.

Recuerda que el factorial de un número es el resultado de multiplicar ese número por todos los números que existen desde él hasta el 1. Por ejemplo, el factorial de 5 es 120 pues 5 * 4 * 3 * 2 * 1 es 120.

Voy a encerrar el comportamiento de este programa en funciones para su fácil reutilización. De hecho el método con recursión no puede estar en otro lugar más que en una función.

(más…)

Fibonacci en Python - Método iterativo, recursivo e impresión de serie

Fibonacci en Python

Hoy te enseñaré cómo trabajar  con la secuencia Fibonacci en Python. Te enseñaré a obtener el número que va en determinada posición, así como imprimir toda la serie hasta determinado número.

Veremos las dos formas de trabajar con esta sucesión en Python: de manera iterativa con un ciclo for, y de manera recursiva invocando a la función dentro de sí misma.

(más…)

Árbol binario en C - struct nodo

Árbol binario en C – Inserción y recorrido

Resumen: implementar la estructura de datos de árbol, árbol binario, binary tree o simplemente tree en C y mostrar operaciones para:

  • Insertar un nuevo elemento u hoja
  • Recorridos inorden, postorden y preorden

Vamos a usar recursividad para algunas operaciones. Al insertar elementos vamos a compararlos para insertarlos a la izquierda si son menores que el nodo padre, o a la derecha en caso contrario.

(más…)

Ejecución de Quicksort en C

Quicksort en C: implementación de algoritmo

Ordenar arreglo con Quicksort en C: en este post voy a mostrarte cómo implementar el algoritmo de ordenamiento rápido o quicksort en ANSI C.

Este algoritmo destaca porque es uno de los más rápidos al momento de ordenar arreglos, además de que el mismo no ocupa arreglos temporales, simplemente intercambia variables y utiliza el método de divide y vencerás.

Ejecución de Quicksort en C

Al final podremos ordenar arreglos usando el algoritmo Quicksort en C.

(más…)

Funciones en Kotlin

En este artículo veremos cómo definir e invocar funciones en Kotlin usando la palabra reservada fun.

Daremos un repaso para ver recursividad, funciones variádicas, vacías, de una sola línea, sobrecarga de métodos, funciones con nombres de parámetros, funciones como variables y mucho más.

Factorial en Kotlin – Ejemplo de función con recursividad

Una función es una forma de separar y dividir la lógica de nuestros programas. La mayoría de veces, las funciones en Kotlin reciben argumentos, los procesan y devuelven un resultado.

A veces hay funciones que no regresan nada, o que no reciben nada; pero que igualmente sirven para algo.

(más…)

Crear archivos zip con PHP: agregar archivos y directorios, descargar zip y proteger con contraseña

Desde hace tiempo he querido hacer un post completo sobre cómo trabajar con archivos ZIP en PHP.

Como sabemos, los archivos ZIP son unos paquetes que permiten tener dentro múltiples archivos para su posterior transporte.

Tutorial de creación de archivos zip con PHP

PHP tiene soporte nativo para los archivos ZIP en la clase ZipArchive y permite comprimir o empaquetar archivos de una manera fácil.

Hoy vamos a ver cómo:

  1. Crear un archivo zip  y agregarle contenido
  2. Forzar la descarga de un archivo zip, es decir, crear un zip y mostrarlo en el navegador
  3. Agregar archivos a un zip a partir de un patrón glob
  4. Agregar todo el contenido de un directorio de manera recursiva. Es decir, agregar todo el contenido y si hay un directorio agregar el contenido de ese directorio, así recursivamente.
  5. Proteger un archivo ZIP con contraseña

Todavía no vamos a ver cómo descomprimir o desempaquetar, eso es de otro post.

(más…)

Fibonacci recursivo y con ciclos en Java

Sucesión fibonacci en Java: método iterativo y recursivo

En este artículo voy a explicar cómo imprimir la sucesión fibonacci en Java, y también expondré dos métodos para obtener el número fibonacci que iría en determinada posición.

Declararemos dos funciones: una iterativa o con ciclos y otra que utiliza recursión o recursividad para llamarse a sí misma.

Fibonacci recursivo y con ciclos en Java

Fibonacci recursivo y con ciclos en Java

Veamos entonces cómo implementar el algoritmo para la secuencia fibonacci en Java.

(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…)

Factorial recursivo e iterativo en Ruby

Factorial iterativo y recursivo en Ruby

Anteriormente vimos el algoritmo del factorial en JavaScript. Ahora veamos cómo calcular el factorial de un número usando el lenguaje de programación Ruby.

Factorial recursivo e iterativo en Ruby

Factorial recursivo e iterativo en Ruby

Veremos dos formas de resolverlo, la primera utiliza un ciclo while (forma iterativa o con ciclos) y la segunda un enfoque recursivo o con recursión en donde la función se llama a sí misma.

(más…)