Abaixo está o método "fitness" alterado para permitir permitem a exclusão de um x número de letras por posição:
private static int fitness(String trial){
int retVal = 0;
String setA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ A";
String setB = "BCDEFGHIJKLMNOPQRSTUVWXYZ AB";
String setC = "CDEFGHIJKLMNOPQRSTUVWXYZ ABC";
String setD = "DEFGHIJKLMNOPQRSTUVWXYZ ABCD";
String setE = "EFGHIJKLMNOPQRSTUVWXYZ ABCDE";
String setF = "FGHIJKLMNOPQRSTUVWXYZ ABCDEF";
String setG = "GHIJKLMNOPQRSTUVWXYZ ABCDEFG";
String setH = "HIJKLMNOPQRSTUVWXYZ ABCDEFGH";
String setI = "IJKLMNOPQRSTUVWXYZ ABCDEFGHI";
String setJ = "JKLMNOPQRSTUVWXYZ ABCDEFGHIJ";
String setK = "KLMNOPQRSTUVWXYZ ABCDEFGHIJK";
String setL = "LMNOPQRSTUVWXYZ ABCDEFGHIJKL";
String setM = "MNOPQRSTUVWXYZ ABCDEFGHIJKLM";
String setN = "NOPQRSTUVWXYZ ABCDEFGHIJKLMN";
String setO = "OPQRSTUVWXYZ ABCDEFGHIJKLMNO";
String setP = "PQRSTUVWXYZ ABCDEFGHIJKLMNOP";
String setQ = "QRSTUVWXYZ ABCDEFGHIJKLMNOPQ";
String setR = "RSTUVWXYZ ABCDEFGHIJKLMNOPQR";
String setS = "STUVWXYZ ABCDEFGHIJKLMNOPQRS";
String setT = "TUVWXYZ ABCDEFGHIJKLMNOPQRST";
String setU = "UVWXYZ ABCDEFGHIJKLMNOPQRSTU";
String setV = "VWXYZ ABCDEFGHIJKLMNOPQRSTUV";
String setW = "WXYZ ABCDEFGHIJKLMNOPQRSTUVW";
String setX = "XYZ ABCDEFGHIJKLMNOPQRSTUVWX";
String setY = "YZ ABCDEFGHIJKLMNOPQRSTUVWXY";
String setZ = "Z ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String set_ = " ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
for(int i = 0;i < trial.length(); i++){
if (trial.charAt(i) == target.charAt(i)) retVal++;
}
// each line below comment excludes one letter per position
for(int i = 0;i < trial.length(); i++){
if (trial.charAt( i ) != target.charAt( i ) &&
trial.charAt( i ) != setA.charAt( i ) &&
trial.charAt( i ) != setB.charAt( i ) &&
trial.charAt( i ) != setC.charAt( i ) &&
trial.charAt( i ) != setD.charAt( i ) &&
trial.charAt( i ) != setE.charAt( i ) &&
trial.charAt( i ) != setF.charAt( i ) &&
trial.charAt( i ) != setG.charAt( i ) &&
trial.charAt( i ) != setH.charAt( i ) &&
trial.charAt( i ) != setI.charAt( i ) &&
trial.charAt( i ) != setJ.charAt( i ) &&
trial.charAt( i ) != setK.charAt( i ) &&
trial.charAt( i ) != setL.charAt( i ) &&
trial.charAt( i ) != setM.charAt( i ) &&
trial.charAt( i ) != setN.charAt( i ) &&
trial.charAt( i ) != setO.charAt( i ) &&
trial.charAt( i ) != setP.charAt( i ) &&
trial.charAt( i ) != setQ.charAt( i ) &&
trial.charAt( i ) != setR.charAt( i ) &&
trial.charAt( i ) != setS.charAt( i ) &&
trial.charAt( i ) != setT.charAt( i ) &&
trial.charAt( i ) != setU.charAt( i ) &&
trial.charAt( i ) != setV.charAt( i ) &&
trial.charAt( i ) != setW.charAt( i ) &&
trial.charAt( i ) != setX.charAt( i ) &&
trial.charAt( i ) != setY.charAt( i ) &&
trial.charAt( i ) != setZ.charAt( i ) &&
trial.charAt( i ) != set_.charAt( i ) &&
trial.charAt( i ) != parent.charAt( i ) ) {
return 0;
}
}
return retVal;
}