Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var mapa     = Mapa.FromFile();
            var ambiente = new Ambiente();

            //TEstado: Local
            var problemaMapa = new ProblemaMapa
            {
                Mapa    = mapa,
                Inicial = mapa.Cidade(Cidade.Arad),
                Destino = mapa.Cidade(Cidade.Bucareste)
            };

            //TEstado: Ambiente
            var problemaAspirador = new ProblemaAspirador(ambiente);

            var algoritmo = new BuscaCustoUniforme <Local>(problemaMapa);

            while (!algoritmo.AtingiuObjetivo && !algoritmo.Falha)
            {
                Console.WriteLine(algoritmo.ImprimeListas());
                algoritmo.Expande();
            }

            Console.WriteLine(algoritmo.ImprimeListas());

            if (algoritmo.Falha)
            {
                Console.WriteLine("Falha!");
            }
            else
            {
                Console.WriteLine("Resultado: ");
                Console.WriteLine(algoritmo.ImprimeCaminho());
            }

            if (System.Diagnostics.Debugger.IsAttached)
            {
                Console.ReadKey();
            }
        }
Ejemplo n.º 2
0
        private static void Run(string[] args)
        {
            var  dict    = new Dictionary <string, string>();
            var  flat    = new List <string>();
            bool verbose = false;

            for (int i = 0; i < args.Length; i++)
            {
                var arg = args[i];
                if (arg.StartsWith("-"))
                {
                    switch (arg[1])
                    {
                    case 'v':
                        verbose = true;
                        break;

                    default:
                        dict[arg[1].ToString()] = args[++i];
                        break;
                    }
                }
                else
                {
                    flat.Add(arg);
                }
            }

            var p = dict.GetValueOrDefault("p", null);

            switch (p)
            {
            case "m":
            {
                var mapa = Mapa.FromFile();

                string
                    origem  = flat.Count > 0 ? flat[0].ToLower() : "zerind",
                    destino = flat.Count > 1 ? flat[1].ToLower() : "sibiu";

                var problema = new ProblemaMapa
                {
                    Mapa    = mapa,
                    Inicial = mapa.Locais.First(l => l.Nome.ToLower().Contains(origem)),
                    Destino = mapa.Locais.First(l => l.Nome.ToLower().Contains(destino)),
                };

                InstanciaAlgoritmo(problema, dict)
                .Executa(verbose);
            }
            break;

            case "a":
            {
                var problema = new ProblemaAspirador(new Ambiente(
                                                         (int)dict.GetIntOrDefault("t", 2),
                                                         (int)dict.GetIntOrDefault("i", 0))
                                                     );

                InstanciaAlgoritmo(problema, dict)
                .Executa(verbose);
            }
            break;

            case null:
                throw new ArgumentException("Problema não especificado.");

            default:
                throw new ArgumentException("Problema não reconhecido.");
            }
        }