Ha sido muy guarro y no me ha gustado (he usado la fuerza bruta) asi que bueno ya daré con la solución mas elegante que seguramente será una función conveza o algo similar 😓
la primera parte cálculo la población en cada posición y depués a lo bruto el coste de todas las posiciones pasando como función de coste constant_crab_cost os sea el calculo de coste base (1 movimiento 1 unidad de combustible)
Aqui veis que el coste es una funcion muy tonta que acumula el coste de todas las moverse a todas posiciones desde todas las demás (multiplicando cada una de aquellas por su poblacion de cangrejos)
calcular el coste básico por posición aqui es simplemente contar el numero de posiciones entre el origen y destino
Atacamos el test y luego el puzzle...
Otra estrella para la saca aunque sea cutremente por la fuerza bruta (ya hablaremos de eso...)
Veamos la segunda parte.. En esta ocasion nos cambian la función de calculo por una que genera costes incrementales por cada movimiento de mas (que si los contenedores , que si el precio del la luz ya sabéis repercutir al consumidor...)
luego me dí cuenta que Gauss se revolvería en su tumba si me viera calcular así las sumas de una serie aritmética y no con n(n+1)/2. Esta optimización nos ahorra montones de operaciones de memoria y aritméticas...
No mucho mas que cambiar para la parte 2 (seguimos a los bruto)
Buenos pues ya está, el puzzle tarda unos segundos en ejecutarse para mi bochorno..
Otra estrella ganada a lo picateclas
Pensando después se me ocurrio que podria pasarle el costo actual como cota superior a la funcion cost_at de esta manera si excedemos la cota podemos abortar prematuramente el cálculo sabedores de que vamos a calcular en vano el resto..
Ah! por cierto si quereis aprender sobre Gauss y las series aritméticas el gran @emulenews es uno de los primeros sitios donde podeis empezar: francis.naukas.com/2010/04/15/iii…
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!)