Soluciones a los desafíos de Advent of Code en JavaScript (Node.js).
- Node.js >= 18
- Variable de entorno
AOC_SESSION_COOKIEcon la cookie de sesión de adventofcode.com (necesaria para descargar inputs automáticamente)
- Decide si quieres programar en local o en dev container
- Asigna tu session cookie de AOC:
export AOC_SESSION_COOKIE=tu_cookie - Ejecuta
npm start <año> <día>. Si la solución existe, se ejecuta; si no, se prepara el código base y se descarga elinput.txt
| Año | Días completados | Estado |
|---|---|---|
| 2022 | 15/25 | 🔄 En progreso |
| 2023 | 13/25 | 🔄 En progreso |
| 2024 | 11/25 | 🔄 En progreso |
| 2025 | 0/25 | ⏳ Pendiente |
AdventOfCode/
├── index.js # Entry point: node index.js <año> <día>
├── src/
│ ├── template/ # Template para nuevos desafíos
│ │ ├── template.js # Código base de una solución
│ │ └── challengeSetup.js # Script de auto-setup + descarga de input
│ ├── 2022/
│ │ ├── index.js
│ │ ├── day1/
│ │ │ ├── index.js # Orchestrador (require partOne + partTwo)
│ │ │ ├── partOne.js # Solución parte 1
│ │ │ ├── partTwo.js # Solución parte 2
│ │ │ ├── input.txt # Input del desafío
│ │ │ └── README.md # Enunciado del desafío
│ │ └── day2/ ... day25/
│ ├── 2023/ (day1-day13)
│ └── 2024/ (day1-day11)
├── .devcontainer/ # Configuración para dev container (VS Code)
├── package.json
└── .eslintrc.yml
| Comando | Descripción |
|---|---|---|
| npm start <año> <día> | Ejecuta la solución o configura el template si no existe |
| npm test | Ejecuta los tests con Mocha (src/**/*.test.js) |
| npm run lint | Analiza el código con ESLint |
| npm run debug | Ejecuta con inspector de Node.js (--inspect-brk) |
Existen dos patrones en el repositorio:
- Patrón 2022 —
index.jsorquestra la ejecución departOne.jsypartTwo.jspor separado. - Patrón template/2024 — Un único
index.jsque resuelve ambas partes secuencialmente.
Ambos son compatibles con el entry point index.js raíz.
El proyecto usa Mocha + Chai para testing.
npm testLos tests deben ubicarse junto a las soluciones con el patrón *.test.js.
El repositorio incluye configuración para Dev Containers de VS Code, lo que permite un entorno de desarrollo reproducible sin instalar dependencias localmente.
- Runtime: Node.js
- Testing: Mocha + Chai
- Linting: ESLint (configuración airbnb-base)