Otro trabajo "guarro" y que conste que quise hacerlo de una forma elegante pero acabé haciéndolo en plan "el juego de la imitación" buscando el "Heil JS!" y esperando pacientemente a que la "bomba" cuadrase todo..
el parser como siempre para leer todo sin errores que ya bastante lío nos van a formar los amigos de Advent of Code..
Omito la 1º parte por trivial y me voy a la grandiosa idea que me iba a permitir dar la campanda. Un concienzudo análisis de las relaciones entre números y sus segmentos..
Y ha llegado a resolver el test1 pero en el segundo test 😓😓😓 No había forma..
Por mas vueltas que le daba no conseguía ver los fallos y el TDD no ayudaba mucho por que el estado que maneja era grande y díficil de modelar... Entonces se me ocurrió simplificar el asunto, generar permutaciones y aplicar las ideas de las relaciones entre números.. Funcionaría?
Bueno hubo que hacer algunas pruebas y añadir las restricciones apropiadas que capturasen las diferencias sobre todo entre códigos del mismo tamaño aprovechando que los códigos 1 7 4 8 tenian tamaños distintos y algunos como el 7 asimetrías "interesantes"
Tras añadir las restricciones básicas de tamaño y algunas interrelaciones el test 1 pasaba...
Hubo que cambiar algunas restricciones "flojas" por otras mas fuertes para pasar el segundo test..
finalmente probamos suerte con el tercero, unos 2 minutos de calculos y finalmente la bomba cuadro todos los cálculos..
En fin, no siempre se puede ser "elegante" , al menos yo 😓
Bueno no quedé muy contento con el runtime de casi 2 mins asi que repensé la generación de candidatos. sabiendo que 1,4, 7 y 8 son de longitud única restringimos las operaciones de permutacion al resto de números, manteniendo las condiciones...
así que pasamos de comprobar 3628800 pemutaciones para cada linea de display y 1 minuto y medio aprox. para resolver el puzzle completo.
a comprobar 120 pemutaciones para cada linea de display y una fracción de segundo aprox. para resolver el puzzle completo.
BTW: Si calculas los códigos de longitud 5 (2, 3, 5) y luego los de longitud 6 (0, 6, 9) son dos cálculos de 6 pemutaciones para total de 12 que una reducción del 90% frente a los 120 actuales. Ahí es nada!
• • •
Missing some Tweet in this thread? You can try to
force a refresh
El octavo de #AdventOfCode parte 2 en SQL. Un poco ñapas para mi gusto pero es lo que hay!
Empezamos como siempre..
Limpiamos linea alinea y separamos x, y, altura para cada arbol usando CTEs en secuencia.
Cruzamos cada arbol con su scan a derecha, izquierda, arriba y abajo con sub-consultas correlacionadas. Hay que cambair el orden de los que devuleven para que quedan en funcioón del punto de vista. Cada resultado se agrega en un array.
#AdventOfCode 5 Supply Stacks en SQL puro (PostgreSQL)
Si te gusta el SQL lo vas a flipar (creo) , sígueme en este triste historia (por lo de "La Roja") +
Empezamos como siempre, y toca cargar el fichero de test que ya tiene tela...
Empezamos enumerando las lineas del fichero (ya en la tabla de input), quedandonos con la parte de las pilas y calculando la longitud maxima de entre todas las líneas (por si caso no eran iguales)
Quien no sepa que esto que lea mis otros hilos porque ya va siendo lo mismo todo el rato
Tan facil que no lo voy a despiezar pues creo que se entiende de un vistazo y además esta comenetado. Convierte en rangos y comprueba inclusiones entre ellos.
Bueno, de vuelta al #AdventOfCode 3 Rucksack Reorganization
Empezamos leyendo los datos con ayuda de una tabla y restricciones adecuadas..
He creado una vista con la solución y así la reuso para pasar el test y luego el fichero de entrada del desafío.
Seguidamente os explico, aquí la muestro plegada junto con el código completo.
Empiezo mapeando las prioridades ['a'..'z'] -> [1..26] y ['A'..'Z'] -> [27..52] con dos consultas sencillas y el operador UNION ALL
Este año en la encuesta de evaluación docente me van a crujir los alumnos y seguramente las prácticas de la asignatura son lo más parecido a lo que demandan cuando recién aterrizados en el curro te quejas de lo que no visteis en la universidad
Les hemos hecho currar a base de bien primero un diseño con su modelo entidad relación y su diccionario de datos justificando cada dato cada dominio cada tipo y créeme que les hemos hechi pelear cada punto y cada coma lo mismo para el modelo relacional...
después nos hemos dado un conjunto de datos con muchos defectos han tenido que cargarlos en tablas y examinarlos y razonar sobre qué transformaciones o incluso qué modificaciones a su modelo original deberían hacer ( Y efectuarlas!)