Hoy no doy para mas, asi que he podido hacer la 1º parte del #AoC 3 "Binary diagnostics" pero me temo que voy a a ir perdiendo terreno con la cabeza de pelotón 😓
El parser, aqui he añadido una directiva de DoctTEST para poder chequear excepciones de Parsy +info:docs.python.org/3/library/doct…
Un parser muy sencillo claro.. +
Una vez leido calculamos cuantos códigos hay u que longitud tienen estos para crear una lista de contadores de bits, y los códigos gamma y epsilon de la longitud adecuada, fijaod en la primera parte de la función.. +
Contamos cuantos bits a "1" hay en los string de cada código. Una vez contados por cada valor del contador, si supera el 50% de los valores que hemos leido en la lista, el correspondinete bit de gamma va a "1" sino va a "0". Epsilon sigue el mismo razonamiento pero al revés. +
Finalmente hacemos un join convirtiendo los valores de gamma y epsilon (son listas) en un string y parseamos el string como un entero en base 2.
Calculamos la solución y probamos tanto el dataset de prueba como el puzzle propiamente dicho..
Easy cake. 5 estrellitas y aqui lo dejo hasta otro día...
Seguimos con la segunda parte. Primero he extraido el código de calculo de valores mayoritarios y la he ampliado con empates y un test..
Con esta funcion atacamos la busqueda del valor del oxígeno siguiendo la reglas al pie de la letra.. La busqueda recursiva y las comprensiones de listas se presta a codificar esta función de manera muy rápida y directa.
Y sí, he usado un print para sacar la traza y asegurame +
De igual manera atacamos la busqueda del CO2 teniendo en cuenta que calculamos valores mayoritarios en vez de minoritarios asi que hay que cambiar algún == por un !=
Por lo demas igual a su hermana. (las hice por separado para que se vea mas claro..)
Ya sólo queda armar el cuerpo de la segunda parte que no tienen mucho mas que rascar, buscar ambos valores , multiplicar y notificar al usuario. Si recordais el main del módulo captura todas las excepciones posibles asi que poco mas que hacer aquí..
Probamos con los datos de test y viendo que va bien atacamos el puzzle..
Bueno pues hemos terminado... Le he dado 1000 vueltas antes de escribir nada para no cansarme demasiado por algo mi motto es "solvitur ambulando"
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!)