rendered paste body
public class Alkuelain {
protected static int otuslaskuri = 0;
protected final int YKSILOLLISYYS;
protected static char[] perusemas = {'A','C','G','T'};
protected static final int perimanKoko = 30;
protected char[] perima;
protected String perimalista;
public Alkuelain(){ //luo alkueläimen, jolle arvotaan perimä.
this.YKSILOLLISYYS = otuslaskuri;
++Alkuelain.otuslaskuri;
this.perima = new char[ perimanKoko];
for (int i=0; i < this.perima.length; ++i){
this.perima[i] = perusemas[(int) Math.random()*4];
}
}
public Alkuelain(char[] perima){ //luo alkueläimen annetulla perimällä. Määrittele mitä tehdään, jos perimä ei ole kelvollinen.
this.YKSILOLLISYYS = otuslaskuri;
++Alkuelain.otuslaskuri;
//this.perima = new char[ perimanKoko];
for (int i=0; i < perima.length; ++i){
if (this.perima[i] != 'A' ^ this.perima[i] != 'C' ^ this.perima[i] != 'G' ^ this.perima[i] != 'T')
this.perima[i] = perusemas[(int) Math.random()*4];
}
}
public void mutaatio(){ //aikaansaa aidon mutaation alkueläimen perimään, so. jokin arvottu nukleotidi muuttuu arvotulla tavalla.
int j = (int) Math.random()*30;
this.perima[j] = perusemas[(int) Math.random()*4];
}
public Alkuelain jakaudu(){ //palauttaa arvonaan jakautumalla syntyneen alkueläimen. Huomaa että myös perimätaulukon sisältö on kopioitava! Miksi?
return new Alkuelain (this.perima);
}
public Alkuelain pariudu(Alkuelain toinen){ //tuottaa this-alkueläimen ja parametrina annetun alkueläimen jälkeläisen.
char[] parit = new char[ perimanKoko];
for (int i=0; i < parit.length; ++i){
if (Math.random()<0.5)
parit[i] = toinen.perima[i];
else
parit[i] = this.perima[i];
}
return new Alkuelain(parit);
}
public String toString(){ //tuottaa merkkiesityksen alkueläimestä
perimalista = new String (perima);
return "Alkueläin "+this.YKSILOLLISYYS+".: "+this.perimalista;
}
}