Exemple #1
0
        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);
        }
    }
Exemple #3
0
        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;
            }
        }