Advent of Code 2021: Casi no llegamos edition

BeheritSp

#270 en mi caso salen bastante claras:

spoiler

Si quieres pasa tu input y a ver qué sale.

Aquí mi código:

Day13
1 1 respuesta
PaCoX

por fin me sirve la interfaz xdd

1
Flashk

#271 Si acaso, dime si es legible o no, no me digas la solución :)

Input:

NSFW
1 respuesta
BeheritSp

#273 Me sale algo que no se entiende también... ¿el input lo has copiado bien? Yo al abrir el input le doy a click derecho-> guardar como. Eso o cometemos el mismo error que solo ocurre con tu input :D

1 1 respuesta
Flashk

#274 Si, acabo de recopiarlo por si acaso. La primera línea es "462,575" y la última es "fold along y=6".
¿Puedes pasarme tu input para ver si mi algoritmo lo resuelve bien?

Lo que me sale a mi:

# ##   ## ## # # #  #### #  # #### #### 
# ##   ## #### #### #### #  # #### #### 
###     # #### ###  ###  #  # #### # ## 
###  #  # #### # #  ##   #  # #### # ## 
# ## ## # # ## # ## # ## #### #### ## # 
# ## # ## #### # ## ####  ### ## #  ### 
2 respuestas
BeheritSp

#275

spoiler
1 2 respuestas
Flashk

#276 Pues, me sale perfectamente legible el tuyo:

WTF. He abierto un post en reddit para que lo pruebe mas gente, a ver si a nosotros nos falta algo en el código para mi input.

PaCoX

#275 a mi me sale el tuyo:

spoiler
1 respuesta
Flashk

#278 Gracias!

Está solucionado:

Day 13 - La trampilla revealed

Gracias también a #270 por ponerme sobre la pista permitiéndome probar con un input diferente, si no, habría seguido pensando que el algoritmo de folding estaba mal.

1
JonaN

Lo de usar una interfaz es muy de la década pasada, ahora se lleva la fusión entre código y arte:

El código es muy rudimentario así que me lo ahorro xd.

R

He visto que teniais algun problema al buscar las dimensiones de la matriz con el max(X) max(Y) del input. Yo lo he tirado asi y no he encontrado ningun fallo por eso (casualidad por el input que me ha tocado(?))

Dejo por aqui mi solucion en Python

Parte 1

spoiler

Parte 2

spoiler
eZpit

De nuevo mosca con la velocidad del ejercicio de hoy me he puesto a optimizar y le he sacado un -99,5% de speed (12ms -> 84us)

NSFW
1
Flashk

He estado un rato dándole vueltas a la trampilla del ejercicio de hoy.

Day 13 - Dándole una repensada
R

Dia 14 en Python. He tenido que cambiar bastante en la parte2. Segun tenia la parte1, la parte2 no terminaba por falta de memoria. Con memoria suficiente tampoco parece que fuera a terminar en tiempo razonable.

Parte1

spoiler

Parte2

spoiler
BeheritSp

Chulísimo el de hoy, me ha costado sacar la parte 2!

He dejado la parte 1 de la manera "dummy" y la parte 2 de la manera eficiente

Day14
PaCoX

overflow!! usaría diccionarios pero pasando

Flashk

La madre que los parió.

Day 14
PaCoX

el de hoy Dijkstra, cuando tenga tiempo me pongo

BeheritSp

Me ha costado bastante opitmizar la parte 2. Era cuestión de guardarse/checkear solo lo estrictamente necesario. Aún asi me tarda 30 secs, seguro que es mejorable.

Day15
JonaN

Pues el mío ha tardado como 20-25 minutos a pelo, paso de optimizar que bastante tiempo me ha llevado. Me están pareciendo más jodidas de lo que recordaba del año pasado a estas alturas.

spoiler
R

Menuda broma la parte 2, solo cambiar el inicio de una variable ha hecho que pasara de no terminar en 40min a hacerlo en 25 seg o asi...

spoiler

Parte 1

spoiler

Parte 2

spoiler
Flashk

A mi mi Dijkstra me funciona con el fichero de prueba, pero me da un resultado too high para el fichero de entrada XD quiero llorar.

1 respuesta
R

#292 lo mismo al buscar los vecinos?

Esta entrada tiene un caso que no se da en la de ejemplo lo mismo te sirve

1 9 1 1 1
1 1 1 9 1
1 2 respuestas
Flashk

#293 Uy, para ese caso me da el camino infinito. Que curioso.

Edit: Claro, en ese caso concreto no llega a alcanzar el nodo destino. Pero en mi código si que llego al nodo destino. No sé si tiene algo que ver...

1 respuesta
R

#294 pero en ese caso el camino seria pasar por todos los 1s, evitando los 9s
↓→→↑→→↓

1 1 respuesta
Flashk

#295 Sé que hay gente que no ha tenido en cuenta que el algoritmo pueda subir hacia arriba y a la izquierda para sortear cosas así, pero en mi código si que estoy calculando todos los adyacentes en las 4 direcciones:

Day15

Así que estoy algo confuso, se me ocurre que pueda ser más bien la función que decide añadir un nodo a la cola en función del riesgo, pero ya estoy demasiado espeso de andar todo el día probando cosas:

Day 15
1 respuesta
R

#296 asi leyendo no veo nada raro, pero claro... A saber xD

Lo mismo con la entrada pequeña te viene sencillo hacer debug a ver si va todo como esperas.

Lo de llegar a la solución solo avanzando hacia abajo y derecha, no veo como la verdad

2 respuestas
Flashk

#297 le echaré un ojo más adelante, hoy descanso ya. Gracias por la idea de ese input!

1 1 respuesta
JonaN

#298 no tengo tiempo para verlo, pero no lo habrás implementado default, de forma que el coste sea el mismo de A a B y de B a A? Porque creo que el algoritmo tradicional es así, y en este caso el coste no es el mismo porque depende de la casilla final.

1 respuesta
Flashk

#299 En principio lo he construido con dobles aristas. Pero me ha picado el gusanillo por debugar la entrada de #293 y he visto algo interesante: cuando paso por (0,1), me lo marca como visitado. Ok hasta aquí, pero cuando calculo los adyacentes de (1,1), me aparece el (0,1) como no visitado.