Implementado metodo para reconocer si la maquina reconoce la cadena (cinta)
This commit is contained in:
parent
75083921a0
commit
2a1975c2c3
@ -54,6 +54,9 @@ public class MT extends Application {
|
||||
for(int i=0; i<machine.machine.estados.size();i++){
|
||||
System.out.println(machine.machine.estados.get(i));
|
||||
}
|
||||
if(machine.comprobarCadena(new StringBuilder("000111###"),5)){
|
||||
System.out.println("Reconoce");
|
||||
}else System.out.println("No reconoce");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -10,7 +10,42 @@ import org.w3c.dom.Document;
|
||||
|
||||
public class Machine {
|
||||
Automata machine;
|
||||
|
||||
public Machine(Document document) {
|
||||
machine = new Automata(document);
|
||||
}
|
||||
|
||||
boolean comprobarCadena(StringBuilder cinta,int estadofinal) {
|
||||
Estado qi = machine.estados.get(0);
|
||||
int cabezal = 0;
|
||||
do{
|
||||
int i;
|
||||
for(i=0;i<qi.link.size();i++){
|
||||
if(qi.link.get(i).si == cinta.charAt(cabezal)){
|
||||
cinta.setCharAt(cabezal,qi.link.get(i).sj);
|
||||
switch (qi.link.get(i).movimiento){
|
||||
case 'L':{
|
||||
cabezal--;
|
||||
if(cabezal == (-1)){
|
||||
cinta.insert(0,"#");
|
||||
cabezal++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'R':{
|
||||
cabezal++;
|
||||
if(cabezal == cinta.length()) cinta.insert(cabezal,"#");
|
||||
break;
|
||||
}
|
||||
default:{/*Se mantiene*/}
|
||||
}
|
||||
qi = qi.link.get(i).qj;
|
||||
i = -1;
|
||||
}
|
||||
}
|
||||
if(qi.q == estadofinal) return true;
|
||||
return false;
|
||||
}while(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user