コード例 #1
0
 public static int Main(string[] args)
 {
     try
     {
         return(CommandLine.Parser.Default.ParseArguments <SolveUtilityOptions>(args)
                .MapResult(
                    (SolveUtilityOptions opts) => SolveUtilityOptions.RunUtility(opts),
                    errors =>
         {
             Console.WriteLine("##ERROR##");
             foreach (var error in errors)
             {
                 Console.WriteLine(error);
             }
             Console.WriteLine("##ERROR##");
             return -1;
         }));
     }
     catch (Exception ex)
     {
         Console.WriteLine("##BEGIN ERROR##");
         Console.WriteLine(ex);
         Console.WriteLine("##END ERROR##");
         return(-1);
     }
 }
コード例 #2
0
        public static int RunUtility(SolveUtilityOptions options)
        {
            var baseFileDir = options.BaseDir ?? Directory.GetCurrentDirectory();
            var levelIDs    = options.LevelIDs.Split(',', StringSplitOptions.RemoveEmptyEntries);

            if (levelIDs.Length < 1)
            {
                throw new Exception("No level IDs specified");
            }

            foreach (var levelID in levelIDs)
            {
                var levelFileName = $"{levelID}.json";
                var levelFile     = Path.Combine(baseFileDir, levelFileName);

                var serializedLevelString = File.ReadAllText(levelFile);
                var level = Level.Parser.ParseLevel(serializedLevelString);
                level.InitializeLevelForGame();

                Console.WriteLine($"Solving Level [{levelID}]");

                var solutions = Level.Solver.SolveLevel(level);

                StringBuilder outputBuider = new StringBuilder();
                outputBuider.AppendLine($"Level [{levelID}] has {solutions.Count} solutions");
                int solID = 0;
                foreach (var solution in solutions)
                {
                    outputBuider.AppendLine($"{++solID}. {solution.ToString()}");
                }

                Console.WriteLine(outputBuider.ToString());
                Console.WriteLine();
            }

            return(0);
        }