Bueno pues Hoy he hecho un pequeño esfuerzo por teclear y he resuelto el AoC Sonar Sweep parte 1.
Es muy facil asi que he tratado de ser un poco exótico y ahorrarme teclear mucho que apenas he podido aguantar la parte 1
Bueno agregué a un workspace las rutinas del A0C2020 por si puedo ahorrarme esfuerzo (aún ando jodido) El main funciona independiente de cuantos modulos despliegues en el directorio de challenges +
Lo primero que el puzle necesita es un swich para leer el fichero y un comando para lanzar la parte1 y la parte2 por separado. Para eso el módulo registra un subparser que se encarga de esos detalles.. +
Para leer este puzle no vamos a usar parsers combinatorios tipo #Parsy ya que es bastante fácil el formato (tal como sugería @MRonErlang en su stream del otro día) asi que no hay mucho que comentar +
El cuerpo principal de la parte 1 es bastante directo, leemos el fichero y según el subcomando elegido "part1" ó "part2" saltamos a la rutina deseada +
Es bastante sencillo y he buscado una solución que "escale" a la parte 2, en este caso un zip y la notacion de slices me permite imitar la solucion de #Haskell que pergeñé el otro día. usamos un bucle for para iterar el resultado de la cremallera directamente y contamos.. +
con el subparser creado el main nos ofrece el puzle 1 como comando y dentro de sus opciones el poder especificar part1 o part2 asi como el fichero de datos a a correr. Tambien claro podemos pasar la suite de tests (si la hubiera) +
Finalmente corremos en fichero de test y vemos que efectivamente salen 7 incrementos. Ahora probamos con nuestros datos del puzle, en mi caso salen 1583 incrementos. +
Acabo aqui por Hoy (que estoy muy cansado de teclear...) ya os enseñaré la segunda parte que es apenas añadir dos lineas a la primera... Stay tuned!
Bueno venga! que no os voy a dejar con la miel en la boca.. Hacemos un ZIP con la lista desplazada 3 posiciones y sumamos valores. Y usamos esa lista en vez del input original en nuestro bucle for para contar incrementos.. +
Y nos salen los 5 incrementos que dice el AOC +
A si que vamos ya mismo a probar con el puzle propiamente dicho y ya está. Dos estrellitas y aquí si que paro que de verdad que ya no puedo mas. 😢
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!)