#include "solver.h"

// --- Por escribir: parte 3. ---

int can_place(const Board *board, int row, int col, int digit) {
    // La caja de (row, col) empieza en la fila row - row % BOX_SIZE y en la
    // columna col - col % BOX_SIZE. board_is_legal, en board.c, hace una cuenta parecida.
    (void) board;
    (void) row;
    (void) col;
    (void) digit;
    return 0;
}

// Por escribir: elegir, explorar, deshacer. Primero cuenta el nodo: (*nodes)++.
static int search_in_order(Board *board, long *nodes) {
    (void) board;
    (void) nodes;
    return 0;
}

// --- Hecho: la llamada de afuera solo prepara el contador. ---

int solve_in_order(Board *board, long *nodes) {
    *nodes = 0;
    return search_in_order(board, nodes);
}

// --- Por escribir: parte 4. ---

int count_options(const Board *board, int row, int col) {
    (void) board;
    (void) row;
    (void) col;
    return 0;
}

// Por escribir: igual que search_in_order, pero elige la celda con menos opciones.
static int search_fewest_options(Board *board, long *nodes) {
    (void) board;
    (void) nodes;
    return 0;
}

// --- Hecho. ---

int solve_fewest_options(Board *board, long *nodes) {
    *nodes = 0;
    return search_fewest_options(board, nodes);
}
