Cuando programamos videojuegos, rutas en mapas o inteligencia artificial, muchas veces necesitamos calcular la distancia entre dos puntos. Una forma sencilla y útil de hacerlo es usando la distancia de Manhattan.
📌 ¿Qué es la distancia de Manhattan?
La distancia Manhattan (también llamada L1 o “city block distance”) es una métrica que calcula la distancia entre dos puntos sumando las diferencias absolutas de sus coordenadas.
Imagina que estás en una ciudad con calles en forma de cuadrícula (como Manhattan 🗽): para llegar de un punto a otro, no puedes ir en diagonal, solo en línea recta horizontal o vertical. Esa es la idea.
🧮 Fórmula
Para dos puntos:
- A(x₁, y₁)
- B(x₂, y₂)
La distancia Manhattan se calcula así:
Distancia = |x₁ - x₂| + |y₁ - y₂|
✅ Código en C# paso a paso
Aquí tienes un ejemplo básico en C# que calcula la distancia Manhattan entre dos puntos en 2D:
using System;
class Program
{
static void Main()
{
int x1 = 2, y1 = 3;
int x2 = 5, y2 = 1;
int distanciaManhattan = Math.Abs(x1 - x2) + Math.Abs(y1 - y2);
Console.WriteLine("Distancia Manhattan: " + distanciaManhattan);
}
}
Salida:
Distancia Manhattan: 5
🧠 ¿Y en 3D?
Si estás trabajando en 3 dimensiones, simplemente sumas la diferencia del eje z también:
int distancia3D = Math.Abs(x1 - x2) + Math.Abs(y1 - y2) + Math.Abs(z1 - z2);
🔁 ¿Y si quiero una función reutilizable?
Aquí tienes una función que puedes usar cuantas veces quieras:
public static int CalcularDistanciaManhattan(int x1, int y1, int x2, int y2)
{
return Math.Abs(x1 - x2) + Math.Abs(y1 - y2);
}
Y la usas así:
int d = CalcularDistanciaManhattan(2, 3, 5, 1);
Console.WriteLine("Distancia: " + d);
🎯 ¿Cuándo se usa?
- IA de videojuegos (por ejemplo, para encontrar rutas).
- Análisis de datos (distancia entre registros).
- Mapas tipo cuadrícula (como los de estrategia por turnos).
📌 Conclusión
La distancia Manhattan es rápida, simple y útil en muchos escenarios de programación. Si trabajas con cuadrículas, caminos o distancias sin diagonales, este tipo de métrica es ideal.
Contenido restringido
Comments are closed