Matemática para Algoritmos
No es matemática de escuela. Cada idea llega porque un programa real la necesitó: la trabajás a mano con números concretos, la trazás paso a paso, y recién después la escribís en JavaScript/TypeScript y en Kotlin. El objetivo no es memorizar fórmulas — es mirar `PALETTE[count % PALETTE.length]` y saber exactamente por qué funciona.
Parte 1 · Los números como herramientas
5 / 5 disponiblesContar, indexar, dividir y la expresión más reutilizada de toda la programación: n % size.
Parte 2 · Arrays y matemática de índices
8 / 8 disponiblesPor qué los índices empiezan en cero, errores off-by-one, recorridos en ambos sentidos y rotar un array.
- 6. Por qué los índices funcionan como funcionan
- 7. length vs length − 1, y rangos semiabiertos
- 8. Errores off-by-one y el problema del poste
- 9. Recorrido hacia adelante y detenerse temprano
- 10. Recorrido hacia atrás (y el bug que arregla)
- 11. Saltar a través de arrays
- 12. Arrays circulares y ring buffers
- 13. Rotar arrays
Parte 3 · Contadores y acumuladores
7 / 7 disponiblesTotales corridos, promedios, mín/máx, conteos y saldos — los patrones detrás de todo dashboard.
Parte 4 · Lógica booleana y condiciones
7 / 7 disponiblesPar/impar, divisibilidad, tablas de verdad, De Morgan y cómo simplificar una condición ilegible.
Parte 5 · Rangos
6 / 6 disponiblesClamping, porcentajes, razones, mapear un rango en otro e interpolación lineal.
Parte 6 · Matemática de coordenadas
6 / 6 disponiblesDeltas, distancia, cajas envolventes, colisiones y mantener un objeto arrastrado dentro de su contenedor.
Parte 7 · Patrones algorítmicos
8 / 8 disponiblesContadores de frecuencia, dos punteros, ventana deslizante y sumas prefijas — derivados, no memorizados.
Parte 8 · Potencias y crecimiento
7 / 7 disponiblesPotencias de dos, binario, bits, máscaras, flags de permisos y backoff exponencial.
Parte 9 · Búsqueda y pensamiento logarítmico
5 / 5 disponiblesBúsqueda lineal, búsqueda binaria mitad a mitad, y qué se siente realmente O(log n).
Parte 10 · Ordenamiento
9 / 9 disponiblesComparar, intercambiar, selección e inserción para entender, y después divide y vencerás con merge sort — más burbuja y quicksort.
Parte 11 · Recursión
7 / 7 disponiblesCasos base, la pila de llamadas dibujada marco a marco, factorial, Fibonacci y por qué la versión ingenua colapsa.
Parte 12 · Tiempo y planificación
5 / 5 disponiblesSegundos a h:m:s, aritmética del reloj, cuentas regresivas, intervalos repetidos y ventanas de tiempo.
Parte 13 · Matemática de backend
8 / 8 disponiblesPaginación, offsets, lotes, round-robin, rate limits, backoff, buckets de hash y sharding.
Parte 14 · Matemática de frontend
7 / 7 disponiblesProgreso, porcentaje de scroll, aspect ratios, interpolación de animaciones, drag e índice → fila/columna.
Parte 15 · Complejidad
7 / 7 disponiblesPrimero contá las operaciones, después nombrá la curva. O(1), O(n), O(n²), O(log n), O(n log n), tiempo vs espacio.
Parte 16 · Resolución de problemas
12 / 12 disponiblesLeelo, resolvelo a mano, encontrá el patrón, escribí pseudocódigo, traducilo dos veces y rompé tus supuestos.
- 101. Leer bien el problema
- 102. Identificar entradas y salidas
- 103. Resolvelo primero a mano
- 104. Creá tus propios ejemplos
- 105. Encontrá el patrón
- 106. Escribir pseudocódigo
- 107. Traducir pseudocódigo a JavaScript
- 108. Traducí el mismo algoritmo a Kotlin
- 109. Encontrar los casos borde
- 110. Poné a prueba tus supuestos
- 111. Mejorar una solución de fuerza bruta
- 112. Explicá tu propio algoritmo
Parte 17 · Memoria, listas y tablas hash
5 / 5 disponiblesCómo la memoria guarda realmente un array, arrays vs listas enlazadas, funciones hash, colisiones y factor de carga.
Parte 18 · Grafos y caminos mínimos
5 / 5 disponiblesGrafos como datos, búsqueda en anchura, aristas con peso y el algoritmo de Dijkstra.
Parte 19 · Árboles
4 / 4 disponiblesÁrboles como datos anidados, árboles binarios de búsqueda, órdenes de recorrido y por qué el balance define el rendimiento.
Parte 20 · Estrategias: voraz, DP y k-NN
6 / 6 disponiblesDecisiones voraces y cuándo fallan, tablas de programación dinámica y clasificación con k vecinos más cercanos.
Parte 21 · Corrección: demostración, invariantes y modelado
4 / 4 disponiblesPor qué pasar los tests no es lo mismo que ser correcto, inducción e invariantes de ciclo, y la habilidad que define todo: reconocer tu problema como uno que alguien ya resolvió.
Parte 22 · Heaps, colas de prioridad y union-find
4 / 4 disponiblesLas dos estructuras que hacen posibles los algoritmos que siguen: una cola que siempre te da lo más chico, y una estructura que responde «¿están conectados?» casi al instante.
Parte 23 · Grafos, más a fondo
7 / 7 disponiblesGrafos dirigidos y ciclos, orden topológico, componentes, árboles de expansión mínima con Prim y Kruskal, flujo y emparejamiento — y la lección que los une: modelá el grafo y después reusá un algoritmo.
Parte 24 · Búsqueda combinatoria
5 / 5 disponiblesBacktracking como una sola idea que genera todo subconjunto, permutación y solución de Sudoku — y después la poda, que es la única razón por la que termina.
Parte 25 · Programación dinámica, más a fondo
5 / 5 disponiblesSubsecuencia creciente más larga, subsecuencia común más larga y particionado — después cómo reconocer un problema de DP a simple vista, y las formas donde la DP directamente no aplica.
Parte 26 · Intratabilidad, y qué hacer al respecto
6 / 6 disponiblesReducciones, satisfacibilidad y P versus NP explicados sin vueltas — cómo darte cuenta de que un problema es difícil, qué publicar cuando lo es, y una checklist de cierre para diseñar cualquier algoritmo.