gvsu/cs677/pa4/Sequence.cc
josh 2f9c310fc1 added label() functions
git-svn-id: svn://anubis/gvsu@308 45c1a28c-8058-47b2-ae61-ca45b979098e
2008-12-01 01:01:33 +00:00

62 lines
1.2 KiB
C++

#include <cstring>
#include "Sequence.h"
#include "ElementSet.h"
using namespace std;
Sequence::Sequence()
{
myMutationCount = 0;
}
Sequence::Sequence(int size)
{
myMutationCount = 0;
myElements = vector<ElementSet>(size);
}
Sequence::Sequence(const char * initializer)
{
myMutationCount = 0;
int len = strlen(initializer);
myElements = vector<ElementSet>(len);
for (int i = 0; i < len; i++)
{
myElements[i] = ElementSet(initializer[i]);
}
}
Sequence Sequence::parent(const Sequence & other)
{
int size = myElements.size();
Sequence s(size);
for (int i = 0; i < size; i++)
{
ElementSet intersection = myElements[i].Intersection(other.myElements[i]);
if (intersection.size() == 0)
{
s.myElements[i] = myElements[i].Union(other.myElements[i]);
s.myMutationCount++;
}
else
{
s.myElements[i] = intersection;
}
}
return s;
}
ostream & operator<<(ostream & out, const Sequence & s)
{
int sz = s.myElements.size();
for (int i = 0; i < sz; i++)
out << s.myElements[i];
return out;
}
void Sequence::label()
{
for (int i = 0, sz = myElements.size(); i < sz; i++)
myElements[i].label();
}