I just completed "The Treachery of Whales" - Day 7 - Advent of Code 2021 adventofcode.com/2021/day/7 #AdventOfCode
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 😓

Veamos como quedó..

*SPOILERS* *SPOILERS*

#AdventOfCode #AdventOfCode2021
El parser...
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..
Pero sigue siendo cutre 😅

Diviértanse!

#adventofcode #adventofcode2021
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…
No os perdais todos los desafios anteriores: twitter.com/i/events/14661…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with The Code Maverick

The Code Maverick Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @maverick_code

8 Dec
I just completed "Seven Segment Search" - Day 8 - Advent of Code 2021 adventofcode.com/2021/day/8 #AdventOfCode
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..

Veamos..

*SPOILERS* *SPOILERS*

#AdventOfCode #AdventOfCode2021
el parser como siempre para leer todo sin errores que ya bastante lío nos van a formar los amigos de Advent of Code.. Image
Read 11 tweets
7 Dec
La 1º parte del Lanterfish ha sido facilisima (debe ser la segunda la puñetera)

Veamos..

*SPOILERS* *SPOILERS*

#adventodcode #AdventOfCode2021
El parser es mas bien directo ya que el formato es trivial a estas alturas "2,3,4,5,2" 🧐
el ciclo de vida del "lanterfish" es cuestion de entenderlo bien.. una vez hecho la implementacion es trivial. El pez evoluciona estados y opcionalmente tienen un vástago...
Read 14 tweets
7 Dec
Bueno pues "Hydrothermal venture" no ha resultado muy complicado, me temo que voy a flipar cuando llegue al 6...

Os cuento...

*SPOILERS* *SPOILERS

#AdventOfCode2021 #adventofcode
El parser de parsy se come la lista de segmentos de una tacada, aqui nada que ver salvo que quieras aprender un poco de Parsy.
Convierto los segmentos x0, y0 -> x1, y1 a (x0, y0, x1, y1)
filtramos los segmentos vert. y horiz. calculamos el grid necesario y dibujamos cada segmento en el grid (expandiendo horizontal o verticalmente en puntos (x, y) y anotando 1 en el grid por cada paso.
Finalmente contamos los solapamientos.
(código sin cometarios que me canso).
Read 15 tweets
6 Dec
Bueno ya me levanté de la cama y me pasé el Gigant Squid part1

pues vamos allá...

*SPOILERS* *SPOILERS*

#adventofcode #AdventOfCode2021
El parser, este es una bestia de parser se come el fichero entero y digiere la lista de números y todas las tarjetas de juego que se encuentre.. Que mas puedo decir, ejercito casi todo lo que tienen Parsy y como dice @FabioskySG "Hard work pays off" +
Ahora os enseñaré el cuerpo de la parte 1. Construyo instancias de la clase board y luego chequeo todos los números hasta que una de ellas devuelve "Bingo!" tras lo cual obtengo el score y ya hemos terminado. Sencillo gracias a q el trabajo esta en los métodos de la clase Board.+
Read 19 tweets
5 Dec
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 😓

Vamos allá..
*SPOILERS* *SPOILERS*

#AOC201 #AdventOfCode2021
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.. +
Read 16 tweets
5 Dec
El #AoC numero 2.

Os lo cuento brevemente, y la brevedad creedme ha sido una bendición porque no puedo teclear demasiado tiempo..

Vamos allá!

*SPOILERS* *SPOILERS*

#AdventOfCode #AOC2021
El parser se asegura que leemos los comandos correctamente y que no hay nada mas. Sanitizando la entrada me ahorro muchos chequeos en otras partes.. Un par de test unitarios muy básicos y a correr
Si las lambdas fueran mas expresivas me habia ahorrado las subfunciones (quizás con una namedtuple...). por lo demás es la clasica propagación del estado en bucle +
Read 9 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(