コード例 #1
0
ファイル: puzzlesolver.cs プロジェクト: atrievel/Senior-Year
        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();
        }
コード例 #2
0
ファイル: puzzlesolver.cs プロジェクト: atrievel/Senior-Year
        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])));
                }
            }
        }
コード例 #3
0
ファイル: puzzlesolver.cs プロジェクト: atrievel/Senior-Year
        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);
        }