static void XML(params int[] indices)
 {
     if (indices.Length == 0)
     {
         foreach (WExpr program in programs)
         {
             string   s1            = program.ToString();
             XElement xml           = new XElement("WhileProgram", new XAttribute("NumVariables", program.GetNumVariables()), program.ToXML());
             WExpr    parsedProgram = WhileUtilities.ParseWhileProgramFromXML(xml);
             string   s2            = parsedProgram.ToString();
             Console.WriteLine(s1 == s2);
         }
     }
     else
     {
         foreach (int index in indices)
         {
             WExpr    program       = programs[index];
             string   s1            = program.ToString();
             XElement xml           = new XElement("WhileProgram", new XAttribute("NumVariables", program.GetNumVariables()), program.ToXML());
             WExpr    parsedProgram = WhileUtilities.ParseWhileProgramFromXML(xml);
             string   s2            = parsedProgram.ToString();
             Console.WriteLine(s1 == s2);
         }
     }
 }
 static bool uselessVariables(WExpr program)
 {
     foreach (int var in program.GetUselessVariables())
     {
         Console.Write($"{var}, ");
         Console.WriteLine();
     }
     return(true);
 }
Exemplo n.º 3
0
        static void ProgramTest(programMethod body, params int[] indices)
        {
            string input;

            if (indices.Length == 0)
            {
                foreach (WExpr program in programs)
                {
                    Console.WriteLine(program.ToString());
                    input = Console.ReadLine();
                    if (input == "exit")
                    {
                        return;
                    }
                    if (input == "skip")
                    {
                        continue;
                    }
                    if (input == "enter")
                    {
                        int x = 0;
                    }

                    if (!body(program))
                    {
                        return;
                    }
                }
            }
            else
            {
                foreach (int index in indices)
                {
                    WExpr program = programs[index];
                    Console.WriteLine(program.ToString());
                    input = Console.ReadLine();
                    if (input == "exit")
                    {
                        return;
                    }
                    if (input == "skip")
                    {
                        continue;
                    }
                    if (input == "enter")
                    {
                        int x = 0;
                    }

                    if (!body(program))
                    {
                        return;
                    }
                }
            }
        }
        static bool numGenerations(WExpr program)
        {
            //ProgramGenerator genNone = new ProgramGenerator(program, WEFilter.Filtermode.NONE, VariableCache.ConstraintMode.NONE, ProgramBuilder.FilterMode.Trivial);
            ProgramGenerator genInputs = new ProgramGenerator(program, WEFilter.Filtermode.INPUTS, VariableCache.ConstraintMode.NONE, ProgramBuilder.FilterMode.Trivial);
            WExpr            newprogram;
            //int countNone = 0;
            //while (genNone.GenerateWExpr(out newprogram))
            //{
            //    ++countNone;
            //}
            int countInputs = 0;

            while (genInputs.GenerateWExpr(out newprogram))
            {
                ++countInputs;
            }
            //Console.WriteLine($"None: {countNone}, Inputs: {countInputs}");
            return(true);
        }
        //static bool toTMAndRun(WExpr program)
        //{
        //    TMCB<int, int> M = program.ToTMCB(-1);
        //    foreach (int[][] input in WhileUtilities.NonNegIntTestInputs(program.GetNumVariables(), 4, program.GetUselessVariables().ToArray()))
        //    {
        //        Console.WriteLine("input:");
        //        Console.WriteLine(WhileUtilities.PrintTapes(input, M.blank));
        //        bool dummy;
        //        int[][] output = M.Run(input, out dummy);
        //        Console.WriteLine("output:");
        //        Console.WriteLine(WhileUtilities.PrintTapes(output, M.blank));
        //        string s = Console.ReadLine();
        //        if (s == "exit")
        //        {
        //            return false;
        //        }
        //    }
        //    return true;
        //}

        static bool generate(WExpr program)
        {
            WExpr            newProgram;
            ProgramGenerator gen = new ProgramGenerator(program, WEFilter.Filtermode.INFINITE, VariableCache.ConstraintMode.NONE, ProgramBuilder.FilterMode.Trivial);

            while (gen.GenerateWExpr(out newProgram))
            {
                Console.WriteLine(newProgram.ToString());
                string s = Console.ReadLine();
                if (s == "exit")
                {
                    return(false);
                }
                if (s == "skip")
                {
                    return(true);
                }
            }
            return(true);
        }
        static bool toTM(WExpr program)
        {
            TMCB <int, int> M = program.ToTMCB(-1);

            return(true);
        }