// Un tablero de sudoku y lo que se puede preguntar de él. Este módulo ya está hecho.
//
// Formato del archivo: 9 líneas de 9 dígitos, con 0 en cada celda vacía.
#ifndef BOARD_H
#define BOARD_H

#define BOARD_SIZE 9

typedef struct {
    int cells[BOARD_SIZE][BOARD_SIZE];
} Board;

// Lee el archivo en *board. Devuelve 1 si pudo, y 0 si no se abre o no tiene el formato.
int board_load(const char *path, Board *board);

// Escribe el tablero con el mismo formato del archivo.
void board_print(const Board *board);

// ¿Se puede poner digit, de 1 a 9, en esa celda? Revisa la fila, la columna y el bloque de 3 x 3,
// sin contar lo que haya en la celda misma.
int board_can_place(const Board *board, int row, int column, int digit);

// ¿Ningún dígito puesto choca con otro? Un tablero que no lo cumple no tiene solución.
int board_is_legal(const Board *board);

#endif
