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

*SPOILERS* *SPOILERS

#AoC2021 #Python
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!

#AoC2021 #Python
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. 😢

Diviertanse!!

#AoC2021

• • •

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

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.. + Image
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.. + Image
Read 9 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
1 Dec
No expliqué el invento!! ¿Funcionará?


Bueno dadme el beneficio de la duda y trato de explicaros que creo ocurre en este snippet de código..

Vamos allá!! +

#AoC2021
Veamos :
part1 :: [Int] -> Int
part1 ns = length $ filter (>0) $ zipwith (-) ns' ns
where ns’ = tail ns
ns' = tail ns, es la lista "ns" menos su primer elemto, es decir empieza por el segundo. Esto lo uso para restarle el segundo al primero con: zipWith (-) ns' ns que une en cremallera ns' y ns aplicado la resta a cada par de elementos es decir: 2º - 1º, 3º - 2º.. etc..
Read 11 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!

:(