//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); } } }