From 6744de19d56910b88022ed8d01f7b8e91b448e15 Mon Sep 17 00:00:00 2001 From: carlos Date: Mon, 3 Jul 2017 17:30:30 +0000 Subject: [PATCH] =?UTF-8?q?Agregado=20metodo=20comprobaci=C3=B3n=20paso=20?= =?UTF-8?q?a=20paso,=20agregado=20arraylist=20de=20estado=20validos=20y=20?= =?UTF-8?q?metodo=20reset=20en=20Maquina.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mt/Automata.java | 5 ++++ src/mt/Maquina.java | 63 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 9 deletions(-) diff --git a/src/mt/Automata.java b/src/mt/Automata.java index 7d6f3a1..20b9d9f 100644 --- a/src/mt/Automata.java +++ b/src/mt/Automata.java @@ -13,6 +13,7 @@ import java.util.ArrayList; class Automata { private ArrayList estados; + private ArrayList estados_existentes; Automata(Document document) { setEstados(new ArrayList<>()); @@ -50,6 +51,10 @@ class Automata { System.exit(1); } } + estados_existentes = new ArrayList(); + for(int i=0 ; i < getEstados().size() ; i++){ + if(getEstados().get(i) != null) estados_existentes.add(getEstados().get(i).getQ()); + } } ArrayList getEstados() { diff --git a/src/mt/Maquina.java b/src/mt/Maquina.java index 3b68c7a..20e231d 100644 --- a/src/mt/Maquina.java +++ b/src/mt/Maquina.java @@ -14,12 +14,11 @@ class Maquina implements Cloneable { private Estado estadoactual; private Enlace enlaceactual; private String cintaanterior; + private int cabezal; Maquina(Document document) { maquina = new Automata(document); - estadoactual = maquina.getEstados().get(0); - enlaceactual = null; - cintaanterior = ""; + reset(); } @Override @@ -45,14 +44,23 @@ class Maquina implements Cloneable { public String getCintaanterior() {return cintaanterior;} + public int getCabezal() {return cabezal;} + + public void reset(){ + estadoactual = maquina.getEstados().get(0); + enlaceactual = null; + cintaanterior = ""; + cabezal = 0; + } + boolean comprobarCadena(StringBuilder cinta, int[] estadoFinal) { //estadoactual = maquina.getEstados().get(0); - int cabezal = 0; int i; for (i = 0; i < estadoactual.getEnlaces().size(); i++) { if (estadoactual.getEnlaces().get(i).getSi() == cinta.charAt(cabezal)) { - cinta.setCharAt(cabezal, estadoactual.getEnlaces().get(i).getSj()); - switch (estadoactual.getEnlaces().get(i).getMovimiento()) { + enlaceactual = estadoactual.getEnlaces().get(i); + cinta.setCharAt(cabezal, enlaceactual.getSj()); + switch (enlaceactual.getMovimiento()) { case 'L': { cabezal--; if (cabezal == (-1)) { @@ -70,19 +78,56 @@ class Maquina implements Cloneable { } default: {/*Se mantiene*/} } - estadoactual = estadoactual.getEnlaces().get(i).getQj(); + estadoactual = enlaceactual.getQj(); i = -1; } } for(i=0;i