/*---------------------------------
 * Oracle.cpp
 * Created on 09/03/09 by BenCello
 *---------------------------------*/

#include <iostream>
#include <map>
using namespace std;

#include "Oracle_classes.hpp"
#include "Oracle_label.hpp"
#include "Oracle_data.hpp"
#include "Oracle_learn.hpp"


int main (int argc, char * const argv[]) {
	O_oracle oracle;
	O_data data;
<<<<<<< .working
	list<float> alist(7, 1.2);
	list<float> blist(7, 2.1);
	list<float> clist(7, 3.2);
	O_spectral a (56, alist);
	//cout<<a;
	O_spectral b (60, blist);
	O_spectral c (65, clist);
=======
	O_char a ('a');
	O_char b ('b');
	O_char c ('c');
>>>>>>> .merge-right.r83
	
	oracle.start();
<<<<<<< .working
	data.start<O_spectral>();
=======
	data.start<O_char>();
>>>>>>> .merge-right.r83
	
	O_learner build (oracle,data);
	
	build.add(a);
	build.add(b);
	build.add(c);
	build.add(a);
	build.add(b);
	build.add(c);
	build.add(c);
	build.add(a);
	
<<<<<<< .working
	//cout<<oracle;
	//cout<<*(O_spectral*)data[7];
	
	oracle.freestates();
	data.freestates<O_spectral>();
=======
	//cout<<oracle;
	//cout<<*(O_spectral*)data[7];
	
	list<pair<O_state*,int> > * SLT = new list<pair<O_state*,int> >;
	SLT = oracle[0]->rec_sortSLT(SLT,3);
	list<pair<O_state*,int> >::iterator SLTit;
	for (SLTit=SLT->begin(); SLTit!=SLT->end(); SLTit++) {
		cout<<(*SLTit).first->get_statenb()<<" "<<(*SLTit).second<<endl;
	}
	cout<<endl;
	SLT = oracle[6]->sortedSLT(1,3);
	for (SLTit=SLT->begin(); SLTit!=SLT->end(); SLTit++) {
		cout<<(*SLTit).first->get_statenb()<<" "<<(*SLTit).second<<endl;
	}
	
	//oracle.freestates();
	//data.freestates<O_char>();
>>>>>>> .merge-right.r83
}


