Esempio n. 1
0
    void Start()
    {
        SymbolDigraph sg          = new SymbolDigraph(txt, '/');
        Topological   topological = new Topological(sg.digraph());

        foreach (int v in topological.Order())
        {
            print(sg.nameOf(v));
        }
    }
        /**/
        public static void main(string[] strarr)
        {
            string        str           = strarr[0];
            string        str2          = strarr[1];
            SymbolDigraph symbolDigraph = new SymbolDigraph(str, str2);
            Topological   topological   = new Topological(symbolDigraph.G());
            Iterator      iterator      = topological.order().iterator();

            while (iterator.hasNext())
            {
                int i = ((Integer)iterator.next()).intValue();
                StdOut.println(symbolDigraph.name(i));
            }
        }
Esempio n. 3
0
        public static SymbolDigraph GenerateSymbolDigraph(string file, bool allowSelfLoop = true, bool allowParallelEdges = true)
        {
            var lines = File.ReadAllLines(file);
            var input = new List <Tuple <string, string> >();

            foreach (var line in lines)
            {
                var connection = line.Split(' ');
                input.Add(new Tuple <string, string>(connection[0], connection[1]));
            }
            var symbolGraph = new SymbolDigraph(input, allowSelfLoop, allowParallelEdges);

            return(symbolGraph);
        }
Esempio n. 4
0
        public static void TestFileInputTopologicalSort()
        {
            string          absFileName   = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "GraphFiles", "topSort.txt");
            SymbolDigraph   symbolDigraph = new SymbolDigraph(absFileName, ' ');
            DepthFirstOrder dfsOrder      = new DepthFirstOrder(symbolDigraph.graph);

            string preOrderList         = String.Join(",", Array.ConvertAll(dfsOrder.PreOrder, x => symbolDigraph.GetKey(x)));
            string postOrderList        = String.Join(",", Array.ConvertAll(dfsOrder.PostOrder, x => symbolDigraph.GetKey(x)));
            string reversePostOrderList = String.Join(",", Array.ConvertAll(dfsOrder.ReversePostOrder, x => symbolDigraph.GetKey(x)));

            Console.WriteLine(string.Format("PreOrder:{0}", preOrderList));
            Console.WriteLine(string.Format("PostOrder:{0}", postOrderList));
            Console.WriteLine(string.Format("ReversePostOrder:{0}", reversePostOrderList));
        }
Esempio n. 5
0
    /**/
    public static void main(string[] strarr)
    {
        string        str           = strarr[0];
        string        str2          = strarr[1];
        SymbolDigraph symbolDigraph = new SymbolDigraph(str, str2);
        Digraph       digraph       = symbolDigraph.G();

        while (!StdIn.IsEmpty)
        {
            string   str3     = StdIn.readLine();
            Iterator iterator = digraph.adj(symbolDigraph.index(str3)).iterator();
            while (iterator.hasNext())
            {
                int i = ((Integer)iterator.next()).intValue();
                StdOut.println(new StringBuilder().append("   ").append(symbolDigraph.name(i)).toString());
            }
        }
    }
Esempio n. 6
0
        public void Run()
        {
            Console.WriteLine("Choose file:"); // Prompt
            Console.WriteLine("1 - jobs.txt"); // Prompt
            Console.WriteLine("or quit");      // Prompt

            var    fileNumber = Console.ReadLine();
            string fileName;
            char   delimiter;

            switch (fileNumber)
            {
            case "1":
                fileName  = "jobs.txt";
                delimiter = '/';
                break;

            case "quit":
                return;

            default:
                return;
            }


            var @in   = new In($"Files\\Graphs\\{fileName}");
            var lines = !fileName.EndsWith("zip") ? @in.ReadAllLines() : @in.ReadAllLinesFromZip();

            var sg = new SymbolDigraph(lines, delimiter);

            Console.WriteLine(sg.G);

            var topological = new Topological(sg.G);

            foreach (int v in topological.Order())
            {
                Console.WriteLine(sg.Name(v));
            }

            Console.ReadLine();
        }
Esempio n. 7
0
        public void Run()
        {
            Console.WriteLine("Choose file:");   // Prompt
            Console.WriteLine("1 - routes.txt"); // Prompt
            Console.WriteLine("2 - movies.txt"); // Prompt
            //Console.WriteLine("3 - largeG.zip"); // Prompt
            Console.WriteLine("or quit");        // Prompt

            var           fileNumber = Console.ReadLine();
            string        fileName;
            char          delimiter;
            List <string> names;

            switch (fileNumber)
            {
            case "1":
                fileName  = "routes.txt";
                delimiter = '\u0020';
                names     = new List <string> {
                    "JFK", "ATL", "LAX"
                };
                break;

            case "2":
                fileName  = "movies.txt";
                delimiter = '/';
                names     = new List <string> {
                    "Tin Men (1987)", "Bacon, Kevin"
                };
                break;

            //case "3":
            //    fieName = "largeG.zip";
            //    break;
            case "quit":
                return;

            default:
                return;
            }


            var @in   = new In($"Files\\Graphs\\{fileName}");
            var lines = !fileName.EndsWith("zip") ? @in.ReadAllLines() : @in.ReadAllLinesFromZip();

            var sg      = new SymbolDigraph(lines, delimiter);
            var digraph = sg.G;


            foreach (var name in names)
            {
                Console.WriteLine($"{name}");
                if (sg.Contains(name))
                {
                    var s = sg.Index(name);
                    foreach (int v in digraph.Adj(s))
                    {
                        Console.WriteLine($"   {sg.Name(v)}");
                    }
                }
                else
                {
                    Console.WriteLine($"input not contain '{name}'");
                }
            }
            Console.ReadLine();
        }