
#include <iostream>
#include <time.h>
#include <fstream>
#include <sstream>


using namespace std;

#include "base.hpp"
#include "tile.hpp"
#include "map.hpp"
#include "brute.hpp"
#include "generator.hpp"

char * map1 = "EEBE"\
                    "EIBE"\
                    "EBIB"\
                    "BBBB";

char * map2 = "EBEE"\
"EBEB"\
"BEBE"\
"EEEB";

char * map3 = "EBEB"
"BBEE"\
"EEEB"\
"BBBE";


//char * map4 = "BIBB"\
//              "BEEE"\
//              "BIBB"\
//              "EEEB";



int main()
{
    clock_t begin, end;
    double time_spent;


//    generator g;
//    g.build();

    brute b(map3);
begin=clock();
    b.force();
end=clock();
    if (b.done())
        b.print(cout);

//    cout << "found " << g.qty() << " map with enough water and ice \n";
////    begin=clock();
////    g.rawTest();
////    end=clock();
//    cout << "found " << g.qty() << " valid map \n";

    time_spent = ((double)((double)end - (double)begin))/CLOCKS_PER_SEC;
    cout << "time spent" << time_spent<< endl;


//    g.removeDupRot();
//    cout << g.qty() << " valid map after removing rotated duplicate\n";

//    ofstream myfile;
//    for (int i=0;i<g.qty();i++)
//    {
//        stringstream fname;
//        fname << "map" << i << ".txt";
//        char name[1000];
//        cout << "write " << name << endl;
//        fname >> name;
//        myfile.open(name);
//        myfile << "4,4\n";
//        for (int j=0;j<16;j++)
//            myfile << *(g[i]+j) << (j%4==3?"\n":"");
//        myfile.close();
//    }
    

    return 0;
}
