public static string GetEstadoFinalVariableName(EstadoFinal estado) { switch (estado) { case EstadoFinal.SolucionPendiente: return("PENDIENTE"); case EstadoFinal.RechazoDuplicado: return("DUPLICADO"); case EstadoFinal.RechazoErroneo: return("ALTA_ERRONEA"); case EstadoFinal.ResueltoEntregado: return("ENTREGADO"); case EstadoFinal.ResueltoSinEntrega: return("NO_ENTEGADO"); case EstadoFinal.Anulado: return("ANULADO"); default: throw new ArgumentOutOfRangeException("estado"); } }
public bool ValidaEntrada(string sentenca) { Console.WriteLine("Validando Entrada da sentença: " + sentenca); string estadoApontado = EstadoInicial; for (int i = 0; i < sentenca.Length; i++) { Console.WriteLine(); Console.WriteLine("Está no estado: " + estadoApontado + " - Lendo:" + sentenca[i]); if (Transicoes[estadoApontado].ContainsKey(sentenca[i].ToString())) { estadoApontado = Transicoes[estadoApontado][sentenca[i].ToString()]; Console.WriteLine("Troca para apontar para o estado: " + estadoApontado); } else { Console.WriteLine("Entrada não válida!"); return(false); } } if (EstadoFinal.Contains(estadoApontado)) { Console.WriteLine("Entrada Válida."); return(true); } else { Console.WriteLine("Entrada inválida."); return(false); } }
public void Resolver() { NosMarkupStr.Clear(); int numeroMaximoIteracoes = NumeroMaximoIteracoes.HasValue ? NumeroMaximoIteracoes.Value : int.MaxValue; // Pegar valores iniciais PegarValoresFormulario(true); // Pegar valores finais PegarValoresFormulario(false); int repeticoes = default(int); var validarCampo = new ValidaCampos(); bool existeRepeticoesEstadoInicial = validarCampo.ExistemRepeticoes(Utils.ToArrayBidimensional((ushort[])EstadoInicial.Clone()), out repeticoes); if (existeRepeticoesEstadoInicial) { MostrarMensagemErro("Foram encontradas " + repeticoes + " posições repetidas no estado inicial, preencha corretamente para resolver o puzzle"); return; } bool existeRepeticoesEstadoFinal = validarCampo.ExistemRepeticoes(Utils.ToArrayBidimensional((ushort[])EstadoFinal.Clone()), out repeticoes); if (existeRepeticoesEstadoFinal) { MostrarMensagemErro("Foram encontradas " + repeticoes + " posições repetidas no estado final, preencha corretamente para resolver o puzzle"); return; } bool encontrouSolucao = false; // No ultimoNoConhecido = new _8Puzzle.Models.Solver(EstadoInicial, EstadoFinal, numeroIteracoes).Solve(out encontrouSolucao); int numeroiteracoes; ushort[] estadoEncontrado; encontrouSolucao = new PuzzleSolver().Resolver(numeroMaximoIteracoes, EstadoInicial, EstadoFinal, TamanhoPopulacao, ChanceCrossover, ChanceMutacao, out numeroiteracoes, out estadoEncontrado); if (encontrouSolucao) { EncontrouSolucao = encontrouSolucao; PrintarArray(estadoEncontrado, numeroiteracoes); EsconderMensagem(); } else { EncontrouSolucao = false; } }