Advent of Code 2020

¿Dónde me apunto?

https://adventofcode.com/

Normas

  • Cada día se desbloquea un problema nuevo
  • Programas en el lenguaje que te da la gana
  • Utilizas las técnicas que te da la gana
  • Le dedicas el tiempo que te da la gana
  • Cada problema tiene una caja de texto para meter la solución (suelen ser números o alguna cadena de texto pequeña)

Leaderboard privado para el pique sano

NSFW

Las respuestas se postean en Spoiler + code

JonaN

#688 Jajajaj, en realidad tampoco es tan NMS porque no deja de ser lo mismo copypasteado 8 veces, bastante fácil de leer.

La forma de llegar a un np.array desde el input también es bastante chapucera creo, seguro que se puede hacer con 1 o 2 lineas de código.

Por qué dices lo de los números?

1 respuesta
B

#691 Yo pensé eso de ti cuando vi que en otro problema llamabas delta a una variable que contenía un diferencial de otra cantidad jajajaja, la verdad es que se te nota un poco.

1
r2d2rigo

#678 pero como que 25 minutos muyayo, que has liado.

2 respuestas
Traber

#693 pues espera que he dejado el segundo haciéndose mientras bajaba a la oficina xD

1 respuesta
r2d2rigo

#694 acabo de ver tu solucion y jesus la que lias con tal de no usar matrices/arrays bidimensionales. Dale otra pensada cuando tengas tiempo hombre!

Ranthas

Una duda, me he sentado a hacerlo, el tema de comprobar si esta libre o no; es ¿iterativo?

Es decir, imaginemos un asiento libre por completo, como esto:

L L L
L L L
L L L

El elemento (0,0) no está ocupado, si es procedimiento es ITERATIVO, lo ocuparíamos:

X L L
L L L
L L L

Ahora el elemento (0,1) no lo ocuparíamos. Pero viendo la muestra que dan, este caso que expongo sí que se ocuparía porque no es iterativo, es decir, usan como estado inicial el que te da el problema y solo mutan el estado una vez que se han comprobado todos los asientos del estado inicial. Es decir, que no muta el estado con cada comprobación de cada asiento.

Porque si es así, tendré que ir almacenando en una copia las mutaciones que voy haciendo, para no alterar el estado inicial

1 respuesta
B

#696 No, compruebas siempre contra el estado anterior, y el nuevo que vas construyendo no influye en si mismo.

1 respuesta
Ranthas

#697 Perfecto, entiendo; por tanto, desde el estado inicial, donde todos están libres, es obvio que el siguiente estado tendrá todos ocupados, que es lo que pone el ejercicio.

Bueno, ahora que está esto claro, a masillear

BeheritSp

Bastante chusta el de hoy, encima hoy tenía poco tiempo así que está guarrisimo.

Part 1 y 2
1 1 respuesta
S

#699

1
privet

clean code al toque

S

Lo inputs podrían ser un poco mas grandes obligar a hacer la solución correcta, de momento parece que todos se pueden hacer por fuerza bruta.

r2d2rigo
11   15412  4527  *******
10   32726  9693  *************
 9   45730  1193  ***************
 8   48540  3665  *****************
 7   49193  4854  *****************
 6   65491  2013  *********************
 5   70057  1365  **********************
 4   74731  9040  *************************
 3   90829  2840  ****************************
 2  108694  3181  *********************************
 1  128797  8923  *****************************************

Drop gordo hoy, como no mejore mucho la cosa va a ser un 50% menos de participantes...

Fyn4r

Pues personalmente me está pareciendo más fácil que el del año pasado.

Traber

#693 Aquí lo llevas xD:

spoiler
1 respuesta
r2d2rigo

#705 pues bastante similar a como lo he hecho yo, pero me da que esa conversion de JSON que te trae entre manos es lo que esta haciendo que tarde tanto.

1 respuesta
Traber

#706 Nope, la conversión del JSON no tarda un carajo, lo que tarda es en la función "__MutateLayout" al hacer todas las mutaciones, a lo mejor si me aburro hago profiling a ver por dónde se le va la fuerza por la boca a esto.

1 respuesta
r2d2rigo

#707 co;o claro tu sabes lo que se tarda en lanzar una excepcion? Y tu ahi regalandolas como caramelos 🌚

1 respuesta
Traber

#708 Es precisamente donde estoy metido ahora, porque creo que el problema es el overhead de capturar la exceptión en lugar de evitar que ocurra, ahora veo si es eso xd.

1 respuesta
r2d2rigo

#709 estas corriendo el programa desde Visual Studio? La consola tiene un overhead altisimo cada vez que tiene que imprimir texto (como por ejemplo el de excepcion lanzada), prueba a correr el .exe fuera y veras como va algo mejor.

1 respuesta
Traber

#710 Nah, como imaginaba, el overhead del catch de la excepción es altísimo, ahora en unos pocos segundos las saca:

spoiler
R

#673 Bueno, ya tengo la segunda parte. Ayer no habia forma y eso que leí que habia que recorrer los valores en orden inverso, pero nada... Al final han quedado las dos partes en O(N).

Día 10

parte1
parte2
MartiONE

Ya estaría, menos rompecabezas de lo que esperaba:

spoiler
R

Día 11. En la segunda para para obtener los primeros valores visibles no me ha quedado muy bonito. He hecho 2 comprobaciones para las filas (superiores e inferiores), 2 para las columnas y 4 para las diagionales xD

parte1
parte2
eZpit

Al final he hecho un método para las dos partes del día 11.
Hoy me he pegado un poco con el usize de Rust, que no puede ser negativo y me ha obligado a hacer unas cuantas conversiones algo feas, pero bueno. Acepto sugerencias si alguien sabe hacerlo un poco más elegante.

Day 11 Rust
Fyn4r

Dia 11 listo. No pude dedicarle tiempo en casi todo el día asi que la segunda parte es un copy paste de la primera bastante basto xD

Leos

https://github.com/Leos1113/Advent-of-code-2020/tree/main/day3

Soy el más lento del hilo, peor ya he superado al año pasado que solo hice 2 xD a ver si este finde le meto más caña y adelanto unos cuantos dias xD

1 1 respuesta
JuAn4k4

#717 ¿ No te lo habrás copiado no ?

Yo lo dejé ya, en el día 9 creo, fue un mal día y ya paré del todo. Tener que estar todos los días programando en la hora que tengo libre para sentarme en el sofá sin hacer nada se hace algo pesado la verdad.

1 respuesta
QuitCat

El de hoy es más difícil de entender que de hacer, principalmente la segunda parte.
Y espero que no haya que reutilizar porque lo tengo bastante guarro

B

Me estoy muriendo de la puta pereza con este de los barquitos jajajajajaja

De momento la parte 1

spoiler

Parte 2

spoiler

Lo de rotar los vectores ha sido porque mi vision espacial solo me daba para imaginarme como se rotaban 90 grados y no queria pensar mas, la verdad.

1 respuesta