static void Main(string[] args) { string nodes = ""; StringBuilder edges = new StringBuilder(); string algorithm = args[1].ToString().ToLower().Trim(); string file = args[0].ToString().Trim(); string problemType = readFile(file, ref nodes, ref edges); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine("Running " + algorithm + " on " + file); if (problemType.Equals("monitor", StringComparison.OrdinalIgnoreCase)) { Dictionary <string, MonitorNode> nodeList = parseMonitorNodes(nodes); MonitorList monitor = new MonitorList(nodeList); parseMonitorEdges(edges.ToString(), monitor); Console.WriteLine(determineGoalState(runMonitorAlgorithm(algorithm, monitor))); } else if (problemType.Equals("aggregation", StringComparison.OrdinalIgnoreCase)) { Dictionary <string, AggregationNode> nodeList = parseAggregationNodes(nodes); parseAggregationEdges(edges.ToString(), nodeList); Console.WriteLine(determineGoalState(runAggregationAlgorithm(algorithm, nodeList))); } else if (problemType.Equals("pancakes", StringComparison.OrdinalIgnoreCase)) { PancakeNode pancakes = new PancakeNode(nodes); Console.WriteLine(determineGoalState(runPancakeAlgorithm(algorithm, pancakes))); } else { Console.WriteLine("Problem type not recognized."); endProgram(); } Console.ReadKey(); }
private static void parseMonitorEdges(String edgeList, MonitorList monitor) { var charToRemove = new String[] { "[", "]", "(", ")", "\"" }; String[] edges = edgeList.Split(','); var parsedEdges = new List <MonitorNode>(); for (int i = 0; i < edges.Length - 1; i = i + 3) { foreach (var c in charToRemove) { edges[i] = edges[i].Replace(c, "").Trim(); edges[i + 1] = edges[i + 1].Replace(c, "").Trim(); edges[i + 2] = edges[i + 2].Replace(c, "").Trim(); } foreach (MonitorNode aNode in monitor.sensors) { monitor.addConnection(aNode.name, edges[i], aNode.calculateEuclidianDistance(int.Parse(edges[i + 1]), int.Parse(edges[i + 2]))); } } }
private static List <Tuple <string, double> > runMonitorAlgorithm(string algorithm, MonitorList monitor) { List <Tuple <string, double> > possiblePaths = new List <Tuple <string, double> >(); if (algorithm.Equals("bfs", StringComparison.OrdinalIgnoreCase)) { possiblePaths.Add(monitor.runBFS()); } else if (algorithm.Equals("unicost", StringComparison.OrdinalIgnoreCase)) { possiblePaths.Add(monitor.runUCS()); } else if (algorithm.Equals("iddfs", StringComparison.OrdinalIgnoreCase)) { possiblePaths.Add(monitor.startDFS()); } else { Console.WriteLine("Algorithm not recognized."); endProgram(); } return(possiblePaths); }