/*------------------------------------------------------------- Copyright (C) 2000 Alessandro Macri. All Rights Reserved. Permission to use, copy, modify, and distribute this software and its documentation for NON-COMMERCIAL purposes and without fee is hereby granted provided that this copyright notice appears in all copies. THE AUTHOR AND PUBLISHER MAKE NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. THE AUTHORS AND PUBLISHER SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. -------------------------------------------------------------*/ class Gen { // Anzahl der Desoxyribonukleinsäuren: // Vorerst als static final deklariert, da andere Zahlen (noch) keinen Sinn // ergeben. static final int anzDNS = 4; // Anzahl der zu codierenden Aminosäuren: // Um diese flexibel zu halten, ist anzAmino nicht als final deklariert. // So können auch Betrachtungen zu unterschiedlichen Mengen von Aminosäuren // durchgeführt werden int anzAmino; // Verweis auf Ähnlichkeitsmatrix private final Aminos amino; // Transkriptionstabelle: // Bildet die Menge der DNS-Tripel auf die Menge der Aminosäuren ab. int[][][] eintrag = new int [anzDNS][anzDNS][anzDNS]; // Konstruktor: // Erzeugt ein Gen aus den notwendigen Daten. Gen (int[][][] tabelle, int anzAmino, Aminos amino) { // Übersetzungstabelle speichern. this.eintrag=tabelle; // Anzahl der zu codierenden Aminosäuren speichern. this.anzAmino=anzAmino; // Verweis auf Aminosäurentabelle setzen this.amino=amino; } // Konstruktor: // Erzeugt zufällig ein "lebensfähiges" Gen, d.h. eine 4x4x4 Matrix, die // als Übersetzungstabelle fuer verschiedene Aminosäuren dient. Gen (Aminos amino) { int a,b,c; // Verweis auf Aminosäurentabelle setzen this.amino=amino; // Anzahl der zu codierenden Aminosäuren speichern. this.anzAmino=amino.getSize(); // Die Matrix wird mit einer Zufallsbelegung versehen. while(true) { for(a=0;a=0; --a) aminoMarker[a]=false; int anzahl=this.anzAmino; for(a=0;aqmax) kind=this; return kind; } public String toString() { int a,b,c,i; String aus="\t"; for(i=0; i