Seguimos a lomos del SQL, a veces bien a veces hay que tirar de constorsionismos imposibles (o mi nivel no me dá para ello)
Empezamos como siempre...
Limpiamos el pescado, enumeramos y nos preparamos,,,
14 = 7 + 7 así que me curro al caso mitad que ya es grandote. Un auto join de la tabla 7 veces, mirando que los índices de cada letra sean consecutivas y todas las letras distintas entre si.
Laborioso pero asequible. Mi SQL no daba mas de sí Hoy "in the morning"
Montamos en caso de 14 buscando dos fragmentos de 7 consecutivos y nos ahorramos trabajo chequeando solapamiento de arrays en un sólo paso.
Lo he montado como una vista, asi que tras la CTEs sólo queda sacar las coinciencias y me quedo ya con la primera directamente.
Hago unos test y usando checkpointing deshago los inserts una y otra vez entre test y test.
Los test parecen salir bien así que ya sabéis lo que toca.. y usar savepoints es una delicia.
Cargo el fichero de input y calculo... Así me llevo las dos estrellitas del 6. Volveré al 5 si se me ocurre algo, aunque ahora tengo que corregir exámenes...
• • •
Missing some Tweet in this thread? You can try to
force a refresh
#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!)
Bueno, pues estaba dejando pasar unos días para evitar spoilers y meditando si hacer en #Python o en #SQL el #AdventOfCode de este año
Así q estoy tonteando con el SQL e hice la 1ª parte del 1er día.. Como tampoco soy un fiera en SQL me lo he currado con CTEs paso a paso (YMMV)
Empecé con un pequeño script que prepara una tabla para leer la entrada. Esta vez parsear la entrada es fácil asi q no me voy a pegar un tiro en el pié al elegir SQL, no sé qué pasará después..
La tabla es temporal y se borrarrá sola al hacer el COMMIT al final del script +
Metemos los valores de test en un ficherito
y vemos que es va a ser bastante fácil leer esto..