#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int sprawdz=0;
int ile_mutacji=0;
int ile_g=0,ile_gatunkow=0;
int najw_dl_genu=0;
string ktory1,ktory2;
int odpo_silnie=0, odporny=0;
void odpo_2(string gatunek)
{
int poczatek = 0;
int koniec = 0;
int zmienna = 0;
string pom="";
for(int i=0;i<=gatunek.length()-3;i++)
{
if(gatunek[i]=='A' && gatunek[i+1]=='A')
{
poczatek=i;
for(int j=poczatek+2;j<=gatunek.length()-1;j++,i++)
{
if(gatunek[j]=='B' && gatunek[j+1]=='B')
{
koniec = j+1;
i=j+1;
pom = gatunek.substr(poczatek+2,(koniec-2)-(poczatek+1));
//cout<<gatunek<<" "<<pom<<" "<<poczatek<<" "<<koniec<<endl;
for(int x=0;x<=pom.length()/2;x++)
{
if(pom[x]!=pom[pom.length()-1-x])
{
zmienna=1;
break;
}
}
if(zmienna==1)
{
zmienna=0;
}
else odporny++;
}
break;
}
}
}
}
bool odpornosc(string gatunek)
{
for(int i=0; i<=gatunek.length()/2; i++)
{
if(gatunek[i]!=gatunek[gatunek.length()-i-1])
{
odpo_2(gatunek);
//cout<<gatunek[i]<<" "<<gatunek[gatunek.length()-i-1]<<endl;
return 0;
}
}
odpo_silnie++;
}
void ile_genow(string y)
{
int ile_w_jednym=0;
int dlugosc_genu=4;
for(int i=0; i<y.length(); i++)
{
if(y[i]=='A' && y[i+1]=='A')
{
i=i+2;
while(i<y.length())
{
if(y[i]=='B' && y[i+1]=='B')
{
ile_w_jednym++;
i=i+2;
break;
}
dlugosc_genu++;
i++;
}
}
}
if(ile_w_jednym>ile_g)
{
ile_g=ile_w_jednym;
ktory1=y;
}
if(najw_dl_genu<dlugosc_genu)
{
najw_dl_genu=dlugosc_genu;
ktory2=y;
}
}
void mutacja(string x)
{
string fragment = "BCDDC";
if(x.find(fragment)<501)
{
if(x.find("AA") < x.find(fragment) && x.find(fragment)<x.find("BB"))
{
ile_mutacji++;
//cout<<x<<endl;
}
}
}
int main()
{
fstream napis;
string gatunek;
int t[501]= {0},najw=0;
napis.open("dane_geny.txt",ios::in);
//napis.open("kek.txt",ios::in);
while(!napis.eof())
{
napis>>gatunek;
t[gatunek.length()]++;
mutacja(gatunek);
ile_genow(gatunek);
odpornosc(gatunek);
}
for(int i=1; i<=500; i++)
{
if(t[i]>0)
{
ile_gatunkow++;
sprawdz+=t[i];
//ile_g+=t[i];
if(najw<t[i])
{
najw=t[i];
}
// cout<<i<<" "<<t[i]<<endl;
//cout<<ile_gatunkow<<endl;
}
}
cout<<"Ile gatonkow "<<ile_gatunkow<<endl;
cout<<"Najwieksza ilosc w gatunku "<<najw<<endl;
cout<<"Ilosc zmutowanych osobnikow "<<ile_mutacji<<endl;
cout<<"najw ilosc w jednym "<<ile_g<<endl;
cout<<"najw dlugosc genu "<<najw_dl_genu<<endl;
cout<<"silnie odporne gatunki "<<odpo_silnie<<endl;
cout<<"odporne gatunki "<<odporny<<endl;
cout<<sprawdz<<endl;
//cout<<ktory1<<endl;
napis.close();
//wynik.close();
return 0;
}