private static HashSet <char> parseAlphabet(XElement xAlphabet)
        {
            xAlphabet = DFAUtilities.RemoveJustNamespaces(xAlphabet);
            HashSet <char> alphabet = new HashSet <char>();

            foreach (var child in xAlphabet.Elements("symbol"))
            {
                char element = Convert.ToChar(child.Value.Trim());
                alphabet.Add(element);
            }
            return(alphabet);
        }
示例#2
0
        public static XElement getFeedback(XElement regex, XElement alphabet, XElement attemptNfa, XElement maxGrade)
        {
            var cleanAttempt = DFAUtilities.RemoveJustNamespaces(attemptNfa).Element("block");

            expressions = new HashSet <string>();
            wrong       = new HashSet <string>();

            var feedString = "<ul>";
            var tup        = recursiveHelper(regex, alphabet, cleanAttempt);

            feedString += tup.Item3 + "</ul>";

            var grade = 1.0 * int.Parse(maxGrade.Value) * tup.Item1 / expressions.Count;

            if (grade == int.Parse(maxGrade.Value))
            {
                feedString = "Correct!";
            }
            return(XElement.Parse(string.Format("<div><grade>{0}</grade><feedback>{1}</feedback></div>", (int)(Math.Floor(grade)), feedString)));
        }