Advent of Code - Día 5

Mi solución (a medias) para el día 5

hace 10 meses   •   2 min de lectura

Por Andrés Tuñón

¿No sabes en que consiste esto? En el día 1 lo explico:

Advent of Code - Día 1
Se acerca la Navidad y de igual forma una linda época para festejar y compartir con la comunidad de programadores de todo el mundo.

Esta vez no logré solventar el problema y dudo que lo logre terminar, la lógica está ahí; pero son demasiados datos que analizar (bajo mi perspectiva de la solución).

No voy a explicar el enunciado (está abajo), explicaré mi forma de resolverlo; pensé en 2 vías:

  • Geometría Analítica: Si son líneas horizontales y verticales, tienen ecuaciones de la recta tan simples como y=2 o x=3, hasta aquí bien.

    El problema surge  al darte cuenta que no siempre intersectan, no son rectas que tienden al infinito (son segmentos realmente).

    Solo aquí me faltaba comparar los rangos, podía seguir pensando como irme por esta vía, pero se me estaba complicando y pasé a la siguiente.
  • Iterando: Si son extremos enteros sobre una grilla de puntos enteros, facilmente podría iterar sobre la línea hallando cada punto hasta llegar hasta el otro extremo, grave error...

Funciona para el ejemplo que sale inicialmente; pero ya cuando hablamos del input real, es otra historia muy diferente.

Resultado del ejemplo
Resultado del ejemplo
  • Estoy iterando 10 000+ puntos y revisando si se duplican.
Problema Real Parte 1
Problema Real Parte 1

Yo voy a seguir tratando, pero esto me queda como lección; tengo cierto dominio de optimización de la interfaz, pero aquí me demuestro que debo analizar mejor en temas de complejidad y rendimiento (Big O Notation).

Aunque por otro punto de vista, pensé la primera idea justo porque pensé que seria demasiado ir punto por punto agregandolo a una matrix o un arreglo.

Y bueno esto es todo, me está fascinando ver estos puntos claves al programar.

Enunciado:

Day 5 - Advent of Code 2021

Solución:

Happy Coding and Happy Holidays!

Corre la voz

Sigue leyendo