public Mueve(Cerradura cerradura, String nombre, String estado, String entrada) { this.cerradura = cerradura; this.nombre = nombre; this.estado = estado; this.entrada = entrada; }
public void setCerradura(Cerradura cerradura) { this.cerradura = cerradura; }
public LinkedList <Mueve> generarAFD(LinkedList <Transicion> transiciones) { cerraduras = new LinkedList <Cerradura>(); mueves = new LinkedList <Mueve>(); Cerradura cerradura0 = new Cerradura(); cerradura0.getEstados().AddLast("F"); cerradura0.setTransiciones(generarCerradura(transiciones, cerradura0.getEstados())); cerradura0.getTransiciones().AddLast("F"); cerraduras.AddLast(cerradura0); cerradura0.setNombre("0"); int estado = 1; for (int i = 0; i < cerradura0.getTransiciones().Count(); i++) { Console.WriteLine(cerradura0.getTransiciones().ElementAt(i)); } for (int i = 0; i < cerraduras.Count(); i++) { for (int j = 0; j < ArbolBinario.entradas.Count(); j++) { LinkedList <string> m = new LinkedList <string>(); for (int k = 0; k < cerraduras.ElementAt(i).getTransiciones().Count(); k++) { m = generarMueve(transiciones, ArbolBinario.entradas.ElementAt(j), cerraduras.ElementAt(i).getTransiciones().ElementAt(k), m); } LinkedList <string> x = new LinkedList <string>(); x = generarCerradura(transiciones, m); for (int o = 0; o < m.Count(); o++) { x.AddLast(m.ElementAt(o)); } Cerradura cerradura = new Cerradura(m, x); if (x.Count() != 0) { bool bandera = true; Cerradura temp = new Cerradura(); for (int y = 0; y < cerraduras.Count(); y++) { HashSet <string> a1 = new HashSet <string>(); HashSet <string> a2 = new HashSet <string>(); for (int t = 0; t < cerraduras.ElementAt(y).getTransiciones().Count(); t++) { a1.Add(cerraduras.ElementAt(y).getTransiciones().ElementAt(t)); } for (int t = 0; t < x.Count(); t++) { a2.Add(x.ElementAt(t)); } if (a1.SetEquals(a2)) { bandera = false; temp = cerraduras.ElementAt(y); } } if (bandera) { Console.WriteLine("entro"); cerradura.setNombre("" + estado); cerraduras.AddLast(cerradura); Mueve mueve = new Mueve(cerradura, cerraduras.ElementAt(i).getNombre(), cerraduras.ElementAt(i).getNombre(), ArbolBinario.entradas.ElementAt(j)); estado++; mueves.AddLast(mueve); } else { Console.WriteLine("salio"); Mueve mueve = new Mueve(temp, cerraduras.ElementAt(i).getNombre(), cerraduras.ElementAt(i).getNombre(), ArbolBinario.entradas.ElementAt(j)); mueves.AddLast(mueve); } } } } Console.WriteLine("-------------------------------------------------"); cadena = ""; cadena += "digraph g{\n"; cadena += "Graph" + "[label = \"AFD\"] ;\n"; cadena += "rankdir=LR\n;"; cadena += "N [shape = doublecircle, fontsize = 1; style = filled fillcolor=white, fontcolor = white, color = white]; \n"; cadena += "node [shape = circle; style = filled fillcolor=aquamarine, color = aquamarine]\n"; if (cerraduras.ElementAt(0).getTransiciones().Contains("L")) { cadena += "0 [shape = doublecircle; style = filled fillcolor=aquamarine, color = aquamarine];"; } else { cadena += "0 [shape = circle; style = filled fillcolor=aquamarine]; N->0;\n"; } foreach (var item in mueves) { Console.WriteLine("Mueve de: " + item.getEstado() + " con: " + item.getEntrada() + " hacia: " + item.getCerradura().getNombre()); if (item.getEntrada().Equals("\n")) { cadena += item.getEstado() + "->" + item.getCerradura().getNombre() + "[label = \"\\\\n\" ];\n"; } else if (item.getEntrada().Equals("\t")) { cadena += item.getEstado() + "->" + item.getCerradura().getNombre() + "[label = \"\\\\t\" ];\n"; } else if (item.getEntrada().Equals("\"")) { cadena += item.getEstado() + "->" + item.getCerradura().getNombre() + "[label = \"\\\"\" ];\n"; } else { cadena += item.getEstado() + "->" + item.getCerradura().getNombre() + "[label = \"" + item.getEntrada() + "\" ];\n"; } if (item.getCerradura().getTransiciones().Contains("L")) { cadena += item.getCerradura().getNombre() + " [shape = doublecircle; style = filled fillcolor=aquamarine, color = aquamarine];"; } } Console.WriteLine("-------------------------------------------------"); cadena += "}"; Console.WriteLine(cadena); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("-------------------------------------------------"); tablaDeTransiciones(); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("-------------------------------------------------"); return(mueves); }