API REST para generar, validar y resolver tableros de Sudoku con diferentes niveles de dificultad. Incluye documentación interactiva con Swagger UI.
- Generación de juegos: Crea tableros de Sudoku con dificultad personalizable
- Puzzle diario: Sistema de puzzle del día por nivel de dificultad
- Validación: Verifica si un tablero de Sudoku es válido
- Resolución: Resuelve tableros parcialmente completados
- Múltiples niveles: EASY, MEDIUM, HARD, EXPERT, MASTER
- Caché de puzzles: Base de datos PostgreSQL con puzzles pre-generados
- Documentación Swagger: Interfaz interactiva en
/api/docs
- Python 3.9+
- PostgreSQL (para producción)
- Poetry (recomendado para desarrollo)
# Clonar repositorio
git clone <tu-repo>
cd sudoku-api
# Instalar dependencias
poetry install
# Activar ambiente virtual
poetry shell
# Ejecutar servidor
poetry run python app.py# Instalar dependencias
pip install -r requirements.txt
# Ejecutar servidor
python app.pyAccede a la documentación interactiva Swagger UI en:
https://tu-app.railway.app/api/docs
Obtiene resumen de tableros disponibles por dificultad.
Obtiene el puzzle del día (un puzzle único por día y dificultad).
Parámetros:
difficulty(opcional): EASY | MEDIUM | HARD | EXPERT | MASTER
Genera o recupera un puzzle de Sudoku (usa caché de BD si existe).
Parámetros:
iterations(opcional): 10-200 (default: 70)difficulty(opcional): EASY | MEDIUM | HARD | EXPERT | MASTER
Obtiene estadísticas de puzzles disponibles.
Valida un tablero de Sudoku.
Body:
{
"grid": [[1,2,3,4,5,6,7,8,9], ...]
}Resuelve un tablero parcialmente completado.
Body:
{
"grid": [[1,2,0,4,5,6,7,8,9], ...] // 0 = celda vacía
}Nota: Para ver ejemplos de respuesta y probar los endpoints, visita
/api/docs
# Ejecutar todos los tests
poetry run python -m unittest tests/test_api.py
# O con pytest (si lo instalas)
poetry add --group dev pytest
poetry run pytest tests/- Conecta tu repositorio a Railway
- Railway detectará automáticamente el proyecto Python
- Se desplegará automáticamente
PORT=8000 # Puerto del servidor
FLASK_ENV=production # Ambiente (development/production)
DATABASE_URL=postgresql://... # URL de PostgreSQL (Railway lo configura automáticamente)sudoku-api/
├── app.py # Aplicación Flask principal con Swagger
├── requirements.txt # Dependencias para producción
├── pyproject.toml # Configuración Poetry
├── migrations/ # Migraciones de base de datos
│ └── add_date_assigned.sql
├── sudoku_api/
│ ├── __init__.py
│ ├── database.py # Conexión PostgreSQL y queries
│ ├── sudoku_board.py # Lógica del tablero
│ ├── sudoku_game.py # Generación de juegos
│ ├── sudoku_solver.py # Algoritmo de resolución
│ └── validator.py # Validación de tableros
└── tests/
├── test_api.py # Tests de la API REST
└── test_validator.py # Tests del validador
| Nivel | Descripción |
|---|---|
| EASY | Fácil, suitable para principiantes |
| MEDIUM | Intermedio, requiere algo de lógica |
| HARD | Difícil, requiere técnicas avanzadas |
| EXPERT | Muy difícil, para expertos |
| MASTER | Maestro, extremadamente desafiante |
# Desarrollo
poetry run python app.py
# Testing
poetry run python -m unittest tests/test_api.py
# Generar requirements.txt
Instalar los siguientes paquetes en el ambiente:
pip install poetry-plugin-export python-inspector
poetry export --without-hashes --format=requirements.txt > requirements.txt
# Formatear código
poetry run black .
# Levantar ambiente
python3 -m venv path/to/venv
source path/to/venv/bin/activate
python3 -m pip install xyz