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(); } }
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."); } }