//lookup clean.txt, random grade, print
        private static void RandomGrade(int probId)
        {
            string      dir     = "C:/Users/Dileep/Desktop/Attempts/" + probId + "/";
            string      ansFile = "C:/Users/Dileep/Desktop/Answers/ans-" + probId + ".xml";
            List <char> alph    = new List <char> {
                'a', 'b'
            };
            HashSet <char> al          = new HashSet <char>(alph);
            CharSetSolver  solver      = new CharSetSolver(BitWidth.BV64);
            var            dfa_correct = DFAUtilities.parseDFAfromTutor(ansFile, solver);

            RandomGen.SetSeedFromSystemTime();

            using (StreamReader reader = new StreamReader(dir + "clean.txt"))
                using (StreamWriter writer = new StreamWriter(dir + "Random-" + probId + ".txt"))
                {
                    string id;
                    while ((id = reader.ReadLine()) != null)
                    {
                        //CharSetSolver solver = new CharSetSolver(BitWidth.BV64);
                        //file = Directory.GetFiles(dir, id + ".xml", System.IO.SearchOption.AllDirectories);
                        //Console.WriteLine(file[0]);
                        //var dfa = DFAUtilities.parseDFAfromEvent(file[0], solver);
                        //var g = DFAGrading.GetGrade(dfa_correct.Second, dfa.Second, al, solver, timeout, 10);
                        var g = RandomGen.GetNormal(6.85, 3.00);
                        g = Math.Max(Math.Min(g, 10.00), 0.00);
                        g = Math.Round(g);
                        Console.WriteLine("---- {0},{1}", id, g);
                        writer.WriteLine("{0},{1}", id, g);
                    }
                }
        }
        private static void GradeMetric(int probId, long timeout)
        {
            string      dir     = "C:/Users/Dileep/Desktop/Attempts/" + probId + "/";
            string      ansFile = "C:/Users/Dileep/Desktop/Answers/ans-" + probId + ".xml";
            List <char> alph    = new List <char> {
                'a', 'b'
            };
            HashSet <char> al          = new HashSet <char>(alph);
            CharSetSolver  solver      = new CharSetSolver(BitWidth.BV64);
            var            dfa_correct = DFAUtilities.parseDFAfromTutor(ansFile, solver);

            using (StreamReader reader = new StreamReader(dir + "clean.txt"))
                using (StreamWriter writer = new StreamWriter(dir + "Tool-Ind-" + probId + ".txt", false))
                {
                    string   id;
                    string[] file;
                    while ((id = reader.ReadLine()) != null)
                    {
                        //CharSetSolver solver = new CharSetSolver(BitWidth.BV64);
                        file = Directory.GetFiles(dir, id + ".xml", System.IO.SearchOption.AllDirectories);
                        Console.WriteLine(file[0]);
                        var dfa = DFAUtilities.parseDFAfromEvent(file[0], solver);
                        var g1  = Grading.GetGrade(dfa_correct.Second, dfa.Second, al, solver, timeout, 10, FeedbackLevel.Minimal, true, false, false);
                        var g2  = Grading.GetGrade(dfa_correct.Second, dfa.Second, al, solver, timeout, 10, FeedbackLevel.Minimal, false, false, true);
                        var g3  = Grading.GetGrade(dfa_correct.Second, dfa.Second, al, solver, timeout, 10, FeedbackLevel.Minimal, false, true, false);
                        Console.WriteLine("---- {0},{1},{2},{3}", id, g1.First, g2.First, g3.First);
                        writer.WriteLine("{0},{1},{2},{3}", id, g1.First, g2.First, g3.First);
                    }
                }
        }
        //private static void Grade

        private static int GradeSingle(string file1, string file2)
        {
            List <char> alph = new List <char> {
                'a', 'b'
            };
            HashSet <char> al = new HashSet <char>(alph);
            CharSetSolver  solver = new CharSetSolver(BitWidth.BV64);
            var            aut1 = DFAUtilities.parseDFAfromTutor(file1, solver);
            var            aut2 = DFAUtilities.parseDFAfromEvent(file2, solver);
            var            dfa1 = aut1.Second; var dfa2 = aut2.Second;

            return(Grading.GetGrade(dfa1, dfa2, al, solver, 20000, 10).First);
        }
        private static int GradeTest(int probId, long timeout)
        {
            string fromDir = "C:/Users/Dileep/Desktop/Attempts/" + probId + "/";
            string toDir   = "C:/Users/Dileep/Desktop/Graded/" + probId + "/";

            Directory.CreateDirectory(toDir);
            var    files = Directory.GetFiles(fromDir, "*.xml", System.IO.SearchOption.AllDirectories);
            string outputFile;
            string ansFile = "C:/Users/Dileep/Desktop/Answers/" + "ans-" + probId + ".xml";

            var solver = new CharSetSolver(BitWidth.BV64);
            var alph   = new List <char> {
                'a', 'b'
            };
            var al = new HashSet <char>(alph);

            var ans_aut     = DFAUtilities.parseDFAfromTutor(ansFile, solver);
            var dfa_correct = ans_aut.Second;

            TextWriter tmp = Console.Out;

            var count = 0;

            foreach (string inputFile in files)
            {
                outputFile = toDir + Path.GetFileNameWithoutExtension(inputFile) + "-grade.txt";

                var aut = DFAUtilities.parseDFAfromEvent(inputFile, solver);
                var dfa = aut.Second;

                //var writer = new StreamWriter(outputFile, false);
                //Console.SetOut(writer);
                var gradeFeedback = Grading.GetGrade(dfa_correct, dfa, al, solver, timeout, 10);
                var grade         = gradeFeedback.First;
                var feedback      = gradeFeedback.Second;
                if (grade < 10)
                {
                    count++;
                }
                Console.WriteLine("Wrong: #{0}", count);

                //writer.Close();
            }

            return(count);

            //Console.SetOut(tmp);
        }
        private static void LazyGrade(int probId)
        {
            string      dir     = "C:/Users/Dileep/Desktop/Attempts/" + probId + "/";
            string      ansFile = "C:/Users/Dileep/Desktop/Answers/ans-" + probId + ".xml";
            List <char> alph    = new List <char> {
                'a', 'b'
            };
            HashSet <char> al          = new HashSet <char>(alph);
            CharSetSolver  solver      = new CharSetSolver(BitWidth.BV64);
            var            dfa_correct = DFAUtilities.parseDFAfromTutor(ansFile, solver);

            using (StreamReader reader = new StreamReader(dir + "clean.txt"))
                using (StreamWriter writer = new StreamWriter(dir + "Lazy-" + probId + ".txt", false))
                {
                    string   id;
                    string[] file;
                    int      g;
                    RandomGen.SetSeedFromSystemTime();
                    while ((id = reader.ReadLine()) != null)
                    {
                        //CharSetSolver solver = new CharSetSolver(BitWidth.BV64);
                        file = Directory.GetFiles(dir, id + ".xml", System.IO.SearchOption.AllDirectories);
                        Console.WriteLine(file[0]);
                        var dfa = DFAUtilities.parseDFAfromEvent(file[0], solver);
                        if (dfa_correct.Second.IsEquivalentWith(dfa.Second, solver))
                        {
                            g = (RandomGen.GetUniform() > 0.5 ? 10 : 9);
                        }
                        else
                        {
                            g = (int)Math.Max(Math.Min(8.0 - Math.Abs(dfa_correct.Second.StateCount - dfa.Second.StateCount) * 2.0 + RandomGen.GetNormal(0, 2), 10.0), 0.0);
                        }
                        //var g = DFAGrading.GetGrade(dfa_correct.Second, dfa.Second, al, solver, timeout, 10);
                        Console.WriteLine("---- {0},{1}", id, g);
                        writer.WriteLine("{0},{1}", id, g);
                    }
                }
        }