// Tablero de sudoku y su lectura desde un archivo.
#ifndef BOARD_H
#define BOARD_H

#define BOARD_SIZE 9
#define BOX_SIZE 3

// Cada celda tiene un dígito de 1 a 9, o 0 si está vacía.
typedef struct {
    int cells[BOARD_SIZE][BOARD_SIZE];
} Board;

// Lee un archivo con 9 líneas de 9 dígitos, con 0 para una celda vacía.
// Devuelve 1 si lo leyó, y 0 si no se puede abrir o no tiene ese formato: en ese caso,
// no hay que usar *board. No revisa las reglas del sudoku: para eso está board_is_legal.
int board_load(const char *path, Board *board);

// Devuelve 1 si ningún dígito se repite en una fila, en una columna o en una caja de 3 x 3.
int board_is_legal(const Board *board);

// Escribe el tablero, con un punto en cada celda vacía.
void board_print(const Board *board);

#endif
