#include "CounterStats.h"

void CounterStats::AddCounter(GridCounter* c)
{
	accesses.push_back(c->GetAccessCounter());
	moves.push_back(c->GetMoveCounter());
	wallHits.push_back(c->GetWallHitCounter());
}

void CounterStats::PrintStats()
{
	if (accesses.size() == 0 || moves.size() == 0 || wallHits.size() == 0)
	{
		cout << "No stats present." << endl;
	}

	cout << "Minimum accesses: " << *min_element(accesses.begin(), accesses.end()) << endl;
	cout << "Mean accesses: " << reduce(accesses.begin(), accesses.end()) / accesses.size() << endl;
	cout << "Maximum accesses: " << *max_element(accesses.begin(), accesses.end()) << endl;

	cout << "Minimum moves: " << *min_element(moves.begin(), moves.end()) << endl;
	cout << "Mean moves: " << reduce(moves.begin(), moves.end()) / moves.size() << endl;
	cout << "Maximum moves: " << *max_element(moves.begin(), moves.end()) << endl;

	cout << "Minimum wall hits: " << *min_element(wallHits.begin(), wallHits.end()) << endl;
	cout << "Mean wall hits: " << reduce(wallHits.begin(), wallHits.end()) / wallHits.size() << endl;
	cout << "Maximum wall hits: " << *max_element(wallHits.begin(), wallHits.end()) << endl;

}
