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

Unrack

#538 Ese diccionario seguro que tiene la forma de {'nodo': [nodos...]}

eisenfaust

:ninjaedit:

Unrack

Vaya experto en networkx que me he vuelto esta mañana.....

spoiler

Lo peor es que mañana se me va a olvidar

1 respuesta
R

Día 7. En la primera parte no me salia recursivo y lo he tenido que hacer iterativo. Luego para la segunda me ha tocado sacar papel y boli y ya si que la he hecho recursiva.
A ver cuanto duro por aquí, parece que ya van a empezar a requerir más tiempo. La verdad que he perdido bastante tiempo por no plantear primero la solución general en papel y luego hacer el código.

Parte 1

spoiler

Parte 2

spoiler
eZpit

Yo hoy la verdad me he liado porque para la parte 1 he asumido que habría loops y desde el principio quería evitar recursividad infinita.

Day 7 pt 1
Day 7 pt 2
1 respuesta
Fyn4r

No lo pensé mucho pero no puede haber ciclos tal y como está planteado el problema, si no no habría solución

1
sergioRG

#543 me gusta networkx, la utilicé mucho en una asignatura de teoría de redes y facilita mucho la vida
#545 Piensa que si hubiera loops no tendría sentido que te pidieran respuesta alguna en ninguno de los dos apartados porque no podría existir.

2 respuestas
eZpit

#547 El primer apartado SI podría tener cierto sentido. E.g. si se da el caso que "bright white" -> "muted yellow" -> "bright white", puedes darte cuenta que estás en un loop y dejar de iterar porque no habrá "shiny gold" dentro. Aun así, necesitarías bags infinitas, que no tendría sentido xd

1 respuesta
sergioRG

#548 Cierto es. Yo asumí que era un DAG primero por la dificultad general de los problemas y segundo porque semánticamente se me haría raro en un problema así (y de hecho pensaba que era imposible). También porque siempre me ha dado mucho cáncer lo de las strongly connected components y deseaba con todo mi corazón que no hubiera que recurrir a ello.

Unrack

#547 Y tanto. No la había usado nunca la verdad y va finísima. Bueno he intentado hacer el plot automático que tiene y en este grafo se va de madre.

NeV3rKilL

Yo este me da que no lo voy a sacar. No sé cómo salir de la recursividad :upside_down:

Traber

Mi solución de hoy:

Program.cs
Bag.cs
BagCollection.cs
sergioRG

He hecho un video explicando como he hecho el 7 por si a alguien le ayuda, perdon por la nula edicion, voz de mierda y quedarme atascado, lo he improvisado un poco xd

No me tireis mucha mierda porfa

3 1 respuesta
AikonCWD

#553 es tu voz?

1 respuesta
sergioRG

#554 si, por?

1 respuesta
eondev

#555 tienes una voz muy bonita :$

eisenfaust

No les hagas caso. ¡Ánimo crack!

eondev

coño que yo lo digo en serio, es una voz agradable xDDDD

JuAn4k4

Rust, modo vago hoy que estoy cansado

spoiler
test3y

¿Alguien que sepa de haskell sabe en qué hay que fijarse para saber si un paquete de hackage entra dentro de los "comunes" y es normal usarlo? Porque por lo que veo aquí no hay nada parecido a una librería standard, y no sé si hay que mirar el campo "safe haskell" y que ponga safe o trustworthy o en el campo "stability" o qué hostias xD.

Dejo los de ayer y hoy:

1
Leos

Día 2 terminado, la de tiempo que pierdo por ser rust pero cada vez me siento menos subnormal con él.

Segundo día finiquitado, a ver si recupero un poco el ritmo XD

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

sergioRG

Bastante chulo el de hoy, no hay nada que parsear. La segunda parte la he hecho a fuerza bruta, pero la verdad es que tengo curiosidad por si hay alguna manera de hacerlo significativamente más rápido.

1 1 respuesta
Traber

#562 Lo que yo no entiendo es si hay que cambiar el código o el input, supongo que haciendo cualquiera de las dos cosas podría conseguirlo xd

1 respuesta
sergioRG

#563 Yo cambio el código una vez leído. Pero sí, podrías generar muchos ficheros con el mismo programa pero con una instrucción cambiada, ejecutarlos todos y ver cuál es el que te interesa.

Mi solución para ambas partes

spoiler

La explicación

spoiler
Huk

brutal el hilo un 10

1 respuesta
sergioRG

#565 es como el conter pero todos somos publikeros

Traber

Bueno, fuerzabruteado por aquí también xD:

spoiler
Slowbro

Madre mía, que fuera estoy... lo que me ha costado el día 7.

@sergioRG Hostia, te veo suelto con el tema de grafos, ¿alguna referencia más allá de practicar para ver bien estos ejercicios?

2 respuestas
HeXaN
#568Slowbro:

¿alguna referencia más allá de practicar para ver bien estos ejercicios?

Estudiar grafos.

https://runestone.academy/runestone/books/published/pythonds/Graphs/toctree.html

2
sergioRG

#568 Hacer muchos problemas de grafos, además de estudiar algo de teoría de ídem. Pero la verdad es que es más práctica y pelearse que otra cosa, no por leer mucho aprendes a resolver problemas más rápido.

Si vas haciendo de aquí mejoras fijo, además aquí puedes ver las soluciones que han enviado los demás usuarios. Si encuentras alguna legible puedes aprender bastante también, la verdad.

https://codeforces.com/problemset?order=BY_RATING_ASC&tags=graphs%2Ctrees

1

Usuarios habituales

  • Traber
  • sergioRG
  • QuitCat
  • BeheritSp
  • ciza
  • Fyn4r
  • AikonCWD