#ifndef Q1_H_INCLUDED
#define Q1_H_INCLUDED
#include <iostream>
#include <vector>
#include <cstdlib>
#include <fstream>

using namespace std;
// Fonction de résolution
vector< vector <unsigned> > Super_resolution_propagation_contraintes(vector< vector <unsigned> > sudoku, unsigned mode);
//retroune les possibilités en fonction des contraintes
vector <unsigned> poss_case(vector <unsigned> tab_ligne, vector <unsigned> tab_collonne, vector < vector <unsigned> > tab1_case);
//retourne la position d'un elèment dans un vector
unsigned position_in_vector(vector <unsigned> possibilites, unsigned value);
//retourne un tableeau de la collonne
vector <unsigned> get_collone(vector< vector <unsigned> > tableau, unsigned numero_collonne);
//retourne la sous case d'un soudoku
vector < vector <unsigned> > get_case(vector< vector <unsigned> > tableau, unsigned numero_ligne, unsigned numero_collonne, unsigned mode);
//savoir si le tableau ne contient plus d'éèment non initialisé
bool est_total_sudoku (vector< vector <unsigned> > sudoku);
// affichage d'un vector de vector
void affichage_sudoku(vector< vector <unsigned> > sudoku);
//création d'un tabe avec uniquement des 0 pour un sudoku
vector < vector <unsigned> > creation_sudoku_vide(unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes2(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes3(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes4(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes5(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes6(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes7(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes8(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes9(vector< vector <unsigned> > sudoku, unsigned mode);

vector< vector <unsigned> > Super_resolution_propagation_contraintes10(vector< vector <unsigned> > sudoku, unsigned mode);

unsigned CalculInfluence(vector <unsigned> &tab_ligne,  vector <unsigned> &tab_collonne, vector < vector <unsigned> > &tab_case);

void ecrire_fichier(vector < vector <unsigned> > sudokuBase, vector < vector <unsigned> > sudokuFinal, unsigned nb_chgments, unsigned nb_retours,unsigned tmp_exec);

unsigned GetChangement();

unsigned GetRetour();

void ResetGlobal();

vector< vector<unsigned> > lecture_sudoku(string nom, unsigned taille);
#endif // Q1_H_INCLUDED

