Reto 2. Sudoku Killer
Tablero.h
Ir a la documentación de este archivo.
1 
10 #ifndef SUDOKU_TABLERO_H
11 #define SUDOKU_TABLERO_H
12 
13 #include <vector>
14 #include "Grupo.h"
15 
35 class Tablero {
36 private:
37 
43  vector<Grupo> grupos;
44 
48  vector<vector<Casilla>> sudoku;
49 public:
54 
60  Tablero(const vector<Grupo> &grupos, const vector<vector<Casilla>>& sdk);
61 
68  const Grupo &get_grupo (int pos) const;
69 
79  void set_casilla(const Casilla &casilla_escrita, bool limpiar = true);
80 
85  void escribir_vector(const vector<Casilla> &a_escribir);
86 
93 
99 
107  void limpiar(const Casilla &cas);
108 
113 private:
119  Grupo &get_grupo(const Casilla &cas) const;
126  vector<Grupo> getGrupos_fila(const Casilla &fila) const;
127 
134  vector<Grupo> getGrupos_col(const Casilla &col) const;
135 
142  vector<Grupo> getGrupos_cubo(const Casilla &cubo) const;
143 
150 
172  void metodo_45();
173 
174  // Para obtener inmediatas, devuelven casilla (identificando grupo)
175  // nula si no hay uno solo en la estructura
176  // Devuelve precisamente la casilla que se puede calcular (única fuera o única dentro)
184  const Casilla& unico_casillas_fuera_fil(const Casilla &fila, int desp=0) const;
185 
193  const Casilla& unico_casillas_fuera_col(const Casilla &col, int desp=0) const;
194 
205  const Casilla& unico_casillas_fuera_cubo(Casilla cubo, bool desp_dcha=false, bool desp_abj=false) const;
206 
207 
208  // Para la limpieza
209 
218  void limpiar_basico(const Casilla &cas);
219 
220 
234  void limpiar_fila(const Casilla &cas);
235 
249  void limpiar_col(const Casilla &cas);
250 
264  void limpiar_cubo(const Casilla &cas);
265 
292  void limpiar_unic_comb(const Casilla &cas);
293 };
294 
295 
296 #endif //SUDOKU_TABLERO_H
Fichero cabecera del TDA Grupo.
TDA Casilla Representa una única posición de sudoku que puede contener un único valor numérico.
Definition: Casilla.h:29
TDA Grupo Representa los conjuntos contiguos de celdas marcados con línea discontinua en un Sudoku Ki...
Definition: Grupo.h:37
TDA Tablero Representa al sudoku en sí; es decir, al tablero 9x9 con las casillas y los grupos.
Definition: Tablero.h:35
vector< Grupo > getGrupos_cubo(const Casilla &cubo) const
Devuelve un vector de los grupos que tienen al menos una casilla en ese cubo.
const Casilla & unico_casillas_fuera_fil(const Casilla &fila, int desp=0) const
Devuelve la casilla que se puede calcular (única fuera o única dentro). Devuelve casilla nula si no e...
void limpiar_basico(const Casilla &cas)
Dada la última casilla escrita en el tablero, limpia todas las combinaciones y posiciones de cada est...
vector< Grupo > getGrupos_col(const Casilla &col) const
Devuelve un vector de los grupos que tienen al menos una casilla en esa columna.
void set_casilla(const Casilla &casilla_escrita, bool limpiar=true)
Modifica el grupo de la casilla que escribe eliminándola de este, con el metodo quitar_casilla (Casil...
void metodo_45()
Escribe las casillas determinadas por el método del 45 (o derivados inmediatos).
vector< Grupo > grupos
Vector de los grupos que quedan en el sudoku.
Definition: Tablero.h:43
void limpiar(const Casilla &cas)
Actualiza el tablero. LLama a:
void rellenar_unitarias()
Rellena los grupos que tienen una sola casilla.
vector< Grupo > getGrupos_fila(const Casilla &fila) const
Devuelve un vector de los grupos que tienen al menos una casilla en esa fila.
Grupo & get_grupo(const Casilla &cas) const
Devuelve el grupo al que esta casilla pertenece.
void limpiar_unic_comb(const Casilla &cas)
Sobre cada uno de los grupos tocados por las estructuras a las que cas pertenece se comprobará:
void escribir_inmediatos()
Escribe las casillas inmediatas obtenidas:
void escribir_vector(const vector< Casilla > &a_escribir)
Escribe un vector de casillas en el tablero. Llama a Tablero::set_casilla()
void limpiar_fila(const Casilla &cas)
Dada la última casilla escrita en el tablero (o simulada), itera sobre todos los grupos con casillas ...
void limpiar_col(const Casilla &cas)
Dada la última casilla escrita (o simulada) en el tablero, itera sobre todos los grupos con casillas ...
void calcular_todas_combinaciones()
Rellena todas las combinaciones posibles (cada una con todas sus posiciones). LLama a calcular combin...
Tablero()
Constructor sin argumentos.
const Grupo & get_grupo(int pos) const
Devuelve el grupo correspondiente a la posición de este en el vector sudoku.
void escribir_determinados()
Itera sobre cada grupo llamando a escribe_determinados()
const Casilla & unico_casillas_fuera_col(const Casilla &col, int desp=0) const
Devuelve la casilla que se puede calcular (única fuera o única dentro). Devuelve casilla nula si no e...
vector< vector< Casilla > > sudoku
Matriz de Casillas que representan el tablero del sudoku en sí.
Definition: Tablero.h:48
const Casilla & unico_casillas_fuera_cubo(Casilla cubo, bool desp_dcha=false, bool desp_abj=false) const
Devuelve la casilla que se puede calcular (única fuera o única dentro). Devuelve casilla nula si no e...
void limpiar_cubo(const Casilla &cas)
Dada la última casilla escrita (o simulada) en el tablero, itera sobre todos los grupos con casillas ...
Tablero(const vector< Grupo > &grupos, const vector< vector< Casilla >> &sdk)
Constructor con vector de grupos y vector de vectores de casillas.