¿No sabes en que consiste esto? En el día 1 lo explico:
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.
- Estoy iterando 10 000+ puntos y revisando si se duplican.
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:
Solución:
Happy Coding and Happy Holidays!