Minitalk

Proyecto programado en C que implementa la comunicación entre un servidor y un cliente usando las señales SIGUSR1 y SIGUSR2. El servidor recibe mensajes del cliente. Soporta caracteres UNICODE.

desktop
Ejecución de Minitalk

Cliente
Server

Enlace al proyecto

Enlace de GitHub


Push Swap

Descripción

El proyecto Push Swap es un desafío algorítmico diseñado para ordenar una pila de números enteros utilizando un conjunto limitado de operaciones. El objetivo es ordenar la pila con el menor número de movimientos posible.

Características

  • Algoritmos de Ordenación: Implementa algoritmos eficientes para ordenar pilas de diferentes tamaños.
  • Operaciones de Pila: Utiliza una variedad de operaciones para manipular y ordenar la pila.
  • Manejo de Errores: Incluye un manejo robusto de errores para entradas inválidas y valores duplicados.

Operaciones

Las siguientes operaciones se utilizan para ordenar la pila:

  • sa, sb, ss: Intercambian los dos primeros elementos de la pila.
  • pa, pb: Mueven el elemento superior de una pila a otra.
  • ra, rb, rr: Rotan la pila hacia arriba.
  • rra, rrb, rrr: Rotan la pila hacia abajo.

Algoritmos

  1. Ordenación de Tres Elementos: Un algoritmo específico para ordenar pilas con tres elementos.
  2. Ordenación General: Para pilas con más de tres elementos, se utiliza una combinación de operaciones de pila para mover elementos entre dos pilas (stack_a y stack_b) y ordenarlos. Esto incluye:
    • Encontrar el nodo con el valor máximo y asignarle un índice.
    • Calcular los costos de movimiento para optimizar las operaciones.
    • Mover elementos entre pilas hasta que estén ordenados.

Uso

  1. Compila el proyecto utilizando make.
  2. Ejecuta el programa con una lista de números enteros como argumentos:
    ./push_swap 3 2 5 1 4

Enlace al proyecto

Enlace de GitHub