Los algoritmos usan matemática para contar, comparar, medir, decidir, buscar, ordenar y estimar. Aunque el código parezca lógico, casi siempre hay una estructura matemática detrás.
Un algoritmo es una secuencia ordenada de pasos para resolver un problema. La matemática aparece cuando definimos condiciones, repetimos acciones, calculamos posiciones o evaluamos resultados.
No todos los algoritmos necesitan fórmulas complicadas. Muchas veces basta con usar operaciones básicas, divisibilidad, promedios, porcentajes, comparaciones y funciones simples.
En este tema veremos ejemplos concretos de matemática aplicada a algoritmos con JavaScript.
Contar es una de las operaciones matemáticas más frecuentes. Un algoritmo puede contar productos, usuarios, intentos, errores, palabras o resultados que cumplen una condición.
const edades = [15, 22, 18, 31, 12, 40];
let mayoresDeEdad = 0;
for (const edad of edades) {
if (edad >= 18) {
mayoresDeEdad++;
}
}
console.log(mayoresDeEdad);
Muchos algoritmos suman valores para obtener totales. Esta idea aparece en carritos de compra, estadísticas, reportes y cálculos financieros.
const precios = [1200, 850, 430, 2100];
let total = 0;
for (const precio of precios) {
total += precio;
}
console.log(total);
El promedio resume un conjunto de datos en un solo valor. Es útil para notas, tiempos, ventas, mediciones y métricas de uso.
const tiempos = [12, 15, 11, 18, 14];
let suma = 0;
for (const tiempo of tiempos) {
suma += tiempo;
}
const promedio = suma / tiempos.length;
console.log(promedio);
Buscar el menor o el mayor valor requiere comparar. Este patrón aparece en precios, temperaturas, puntajes y distancias.
const puntajes = [340, 120, 560, 410, 290];
let maximo = puntajes[0];
for (const puntaje of puntajes) {
if (puntaje > maximo) {
maximo = puntaje;
}
}
console.log(maximo);
El operador módulo permite trabajar con restos. Es útil para alternar turnos, detectar pares, repetir patrones y circular por índices.
for (let turno = 0; turno < 6; turno++) {
const jugador = turno % 2;
console.log("Turno " + turno + ": jugador " + jugador);
}
La divisibilidad aparece en muchos algoritmos. Un número es par si el resto de dividirlo por 2 es cero.
const numeros = [3, 8, 11, 14, 20];
for (const numero of numeros) {
if (numero % 2 === 0) {
console.log(numero);
}
}
Una búsqueda lineal revisa los elementos uno por uno hasta encontrar el valor buscado o llegar al final.
const codigos = [105, 208, 319, 421];
const buscado = 319;
let encontrado = false;
for (const codigo of codigos) {
if (codigo === buscado) {
encontrado = true;
}
}
console.log(encontrado);
La búsqueda binaria usa la mitad de un intervalo para decidir dónde seguir buscando. Requiere que los datos estén ordenados.
const datos = [4, 9, 15, 23, 31, 42, 58];
const buscado = 31;
let izquierda = 0;
let derecha = datos.length - 1;
let posicion = -1;
while (izquierda <= derecha) {
const medio = Math.floor((izquierda + derecha) / 2);
if (datos[medio] === buscado) {
posicion = medio;
break;
}
if (datos[medio] < buscado) {
izquierda = medio + 1;
} else {
derecha = medio - 1;
}
}
console.log(posicion);
Ordenar significa reorganizar valores según una regla. JavaScript permite indicar la comparación matemática que define el orden.
const numeros = [18, 4, 72, 9, 31];
numeros.sort((a, b) => a - b);
console.log(numeros);
La diferencia absoluta permite medir qué tan lejos están dos valores sin importar cuál es mayor.
const temperaturaEsperada = 22;
const temperaturaActual = 18.5;
const diferencia = Math.abs(temperaturaEsperada - temperaturaActual);
console.log(diferencia);
Normalizar convierte un valor a una escala común. Por ejemplo, pasar un puntaje de 0 a 100 a un valor entre 0 y 1.
const puntaje = 75;
const minimo = 0;
const maximo = 100;
const normalizado = (puntaje - minimo) / (maximo - minimo);
console.log(normalizado);
La matemática ayuda a estimar cuánto trabajo hace un algoritmo. Si un bucle recorre 100 elementos, realiza aproximadamente 100 pasos principales.
const cantidadElementos = 100;
let operaciones = 0;
for (let i = 0; i < cantidadElementos; i++) {
operaciones++;
}
console.log(operaciones);
Algunos algoritmos crecen de forma lineal y otros de forma cuadrática. Esta diferencia importa cuando aumenta la cantidad de datos.
const n = 5;
let operaciones = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
operaciones++;
}
}
console.log(operaciones);
const valores = [];
if (valores.length === 0) {
console.log("No se puede calcular el promedio");
} else {
const total = valores.reduce((suma, valor) => suma + valor, 0);
console.log(total / valores.length);
}
La matemática básica aparece constantemente en los algoritmos. Comprender conteos, comparaciones, restos, promedios y crecimiento permite escribir soluciones más claras y detectar errores con mayor rapidez.
En el próximo tema veremos aplicaciones matemáticas en videojuegos y simulaciones.