The Code Maverick (3/3 💉) Profile picture
#Codenares (Lite) #EUROBOTUAH Nullum magnum ingenium sine mixture dementia fuit

Dec 5, 2021, 16 tweets

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.. +

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...

Diviertanse!

#AOC2021 #AdventOfCode2021

"Todos estos momentos se per.."

No! no! Los teneis aquí guardados:

twitter.com/i/events/14661…

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"

Diviértanse!!

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling