- Advent of Code es un calendario de Adviento de acertijos de programación para programadores de distintos niveles, y se puede resolver en cualquier lenguaje
- Los participantes pueden usarlo con diversos fines, como preparación para entrevistas, capacitación empresarial, tareas universitarias, ejercicios de práctica y competencias de velocidad
- Se puede participar sin una formación en ciencias de la computación, y está compuesto por problemas que pueden ejecutarse en menos de 15 segundos incluso en una computadora de hace 10 años
- El sitio ofrece autenticación OAuth, modo de alto contraste, leaderboards privados y función de selección de bloques de código, entre otras opciones
- El leaderboard global fue eliminado por problemas de estrés y trampas, y se pone énfasis en una experiencia divertida de resolución centrada en los participantes
Resumen de Advent of Code
- Advent of Code es un evento anual de acertijos de programación creado por Eric Wastl, que ofrece acertijos en formato de calendario de Adviento en línea a partir del 1 de diciembre de cada año
- Los participantes resuelven un problema nuevo cada día y pueden hacerlo libremente sin restricciones de lenguaje
- Los problemas se usan con distintos fines, como preparación para entrevistas, educación, práctica, competencia y desafíos entre personas
- No se necesitan conocimientos de una carrera de ciencias de la computación para participar; basta con habilidades básicas de programación y resolución de problemas
- Todos los problemas pueden completarse en menos de 15 segundos incluso en hardware de hace 10 años
Cómo participar y apoyar
- Para apoyar Advent of Code, puedes compartirlo en Bluesky, Twitter o Mastodon, o contribuir directamente mediante AoC++
- Si te atoras resolviendo un problema, se recomienda revisar la entrada de ejemplo, escribir casos de prueba, pedir ayuda a un amigo o solicitar pistas en el subreddit
Consejos generales (General Tips)
- Si la entrada y la salida de ejemplo no coinciden, hay que volver a leer la descripción del problema y revisar cómo se comporta el código
- Si el ejemplo pasa pero la respuesta sigue siendo incorrecta, conviene crear casos de prueba que puedan verificarse manualmente
- Si aún es difícil resolverlo, puedes tomarte un descanso y volver a intentarlo o preguntar en la comunidad
Preguntas frecuentes (FAQ)
- Selección de bloques de código: con JavaScript activado, se puede seleccionar todo con triple clic
- Método de autenticación: usa OAuth para iniciar sesión con servicios externos como Reddit o GitHub, y las credenciales solo se envían a esos servicios
- Advent of Code solo guarda el ID, nombre, URL e imagen del usuario
- Cambio de dificultad: la dificultad aumenta gradualmente durante el evento, y la dificultad percibida depende del nivel técnico de cada persona
- Hora de publicación de los acertijos: se publican a la medianoche, hora estándar del Este de EE. UU. (UTC-5), porque es la franja horaria que el operador puede gestionar
- Si quieres competir, puedes hacerlo por región mediante leaderboards privados
- Problemas de legibilidad: hay soporte para modo de alto contraste, que puede activarse por defecto en Firefox
- No se aceptan propuestas de acertijos: por temas de derechos de autor, no se reciben ideas de acertijos desde fuera
- Reporte de bugs: si ya pasó más de una hora desde la publicación del acertijo, es poco probable que haya un bug, porque muchas personas ya lo habrán resuelto
- Si surge un problema, se recomienda revisar primero el subreddit
- Sobre las competencias de velocidad: si quieres resolver más rápido, necesitas más práctica y técnica, pero lo importante es participar de la manera que se ajuste a tus propios objetivos
- Cambio en la duración del evento: tras mantener el mismo calendario durante 10 años, se cambió para terminar a mitad de mes y así reducir la carga de tiempo del organizador
- Eliminación del leaderboard global: se eliminó después de 10 años por problemas de competencia excesiva, ataques DDoS y estrés de los usuarios
- En su lugar, se ofrece una función para compartir leaderboards privados en modo de solo lectura
- Uso de IA: como los acertijos buscan mejorar la capacidad de razonamiento humano, no se recomienda usar IA
- Se explica con la analogía de que si haces ejercicio por medio de otra cosa, tú no te vuelves más fuerte
- Prohibida la duplicación de contenido: Advent of Code puede usarse gratis, pero está prohibido copiar el texto de los acertijos o los datos de entrada
- También está prohibido imitar el diseño del sitio web o su nombre
Créditos (Credits)
- Acertijos, código y diseño: Eric Wastl
- Pruebas beta: Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
- Community managers: Danielle Lucek, Aneurysm9
- Participantes: todos los usuarios
Aviso legal (Legal)
- Advent of Code es una marca registrada en Estados Unidos, y su diseño, lenguaje, estilo y concepto son activos exclusivos
- No se permite su copia ni uso sin consentimiento expreso por escrito
- Se permite enlazar o citar los acertijos libremente, incluso en contextos comerciales
- Advent of Code no reclama derechos de autor sobre el código de solución de los participantes
2 comentarios
Yo también participé un poco el año pasado... de verdad que el año se pasa volando :(
Opiniones en Hacker News
Cada vez que escucho que se puede participar aunque no tengas formación en ciencias de la computación, siento que en realidad puede terminar siendo desalentador para los programadores aficionados
Si con “llegar bastante lejos” se refieren a resolver 1 o 2 problemas fáciles, entonces sí, pero más allá de eso no es nada sencillo
Advent of Code es el punto más destacado de cada diciembre
Me da pena que haya desaparecido la tabla global, pero se entiende. Que este año solo dure 12 días también ayuda a reducir la carga
Recomiendo no intentar “ganar”, sino simplemente disfrutar la diversión de resolver problemas
Realmente amo Advent of Code
De hecho, me alegra que este año solo dure 12 días. A fin de año siempre hay muchas cosas en la vida real, así que el año pasado apenas pude hacer más o menos la mitad
Mi agradecimiento enorme para quienes participan
Este año probé Advent of Code por primera vez, y de verdad estuvo muy divertido
Se parece a Project Euler, pero está más centrado en programación que en matemáticas
La primera parte es simple, pero la segunda exige un enfoque optimizado, y eso lo hace interesante
Quitar la tabla pública fue una decisión razonable
Incluso dejando de lado el tema de los LLM, fuera de cierta franja horaria de EE. UU. era imposible competir
En cambio, estaría interesante ver estadísticas globales como la tasa de resolución por zona horaria
También era divertido ver videos de programación en vivo en YouTube
Espero Advent of Code todos los años
Sin estresarme por la tabla, lo tomo como una oportunidad para aprender un lenguaje nuevo o pulir habilidades
En el día a día no suelo tener que iniciar proyectos por mi cuenta ni implementar DFS, así que este tipo de eventos son una buena práctica
Por eso en lo cotidiano equilibro con cosas como escribir tests o documentación
Cada año practico mejorando poco a poco problemas anteriores para ganar eficiencia y legibilidad
Me alegra que Advent of Code se haga también este año
Leyendo el FAQ, no terminé de entender la regla de no publicar los datos de entrada
Entiendo lo del texto del puzzle, pero me da pena que la entrada también tenga que mantenerse privada. Aun así, como es algo que disfruto gratis, lo respeto
Encuesta de lenguajes: Python y C++ son los más usados, pero incluso entre los lenguajes menos comunes hay algunos que encajan muy bien con AoC
La propuesta es compartir qué lenguaje funciona bien
Medio en broma, a veces también intento resolverlos en ASM de Game Boy. En la práctica uso Clojure o Python
Este año estoy haciendo un compilador a bytecode. En la tabla uso Go, y gracias a la velocidad de compilación quedé primero en el Day19 de 2022
Por ejemplo, resuelvo problemas generando listas infinitas y recorriéndolas hasta cumplir la condición
Métodos como
each_cons,permutationyprimeson muy útiles para AoCSi preparas de antemano utilidades para grids 2D o parsers, se vuelve mucho más eficiente
Este año pienso intentar hacerlo en ensamblador (fasm)
Puede ser divertido o doloroso, pero de cualquier forma será un proceso para aprender
Parece que la tabla desapareció después del boom de automatización con IA del año pasado
Es una pena, pero da la impresión de que era una decisión inevitable
De todos modos competir era difícil, así que la tabla global nunca tuvo mucho sentido