Example #1
0
        static void Main(string[] args)
        {
            string help = @"
Usage: BenchmarkGenerator [-h|--help] [-v|--verbose] test_count depth results_path

     -h, --help : display this help
  -v, --verbose : be verbose
    tests_count : number of tests to generate
          depth : number of half-moves of each player 
                  to generate in each test
   results_path : path to folder where to save benchmarks
                  (if folder does not exist, 
                   it will be created)
";

            // will fit both -h and --help
            if (args.Any((s) => s.Contains("-h")) ||
                (args.Length == 0))
            {
                Console.WriteLine(help);
                return;
            }

            bool verbose = false;

            int index = 0;

            if (args[0].Contains("-v"))
            {
                verbose = true;
                index  += 1;
            }

            string testsCountStr = args[index];
            string depthStr      = args[index + 1];
            string path          = args[index + 2];

            int depth = 0;

            int.TryParse(depthStr, out depth);

            if (depth <= 0)
            {
                Console.WriteLine("<depth> needs to be a positive integer.");
                return;
            }

            if (!Directory.Exists(path))
            {
                // create specified path with subdirs
                Directory.CreateDirectory(path);
                Console.WriteLine("Tests directory created");
            }

            int testsCount = 0;

            int.TryParse(testsCountStr, out testsCount);
            int testNumber = 1;

            while (testNumber <= testsCount)
            {
                var           moves = BenchmarkGenerator.GenerateSituation(depth);
                StringBuilder sb    = new StringBuilder();
                for (int i = 0; i < moves.Count; ++i)
                {
                    sb.AppendLine(moves[i].ToString());
                }

                string filePath = path;
                if (!filePath.EndsWith(Path.DirectorySeparatorChar.ToString()))
                {
                    filePath += Path.DirectorySeparatorChar;
                }

                filePath += string.Format("test{0}_{1}.cbi",
                                          testNumber,
                                          DateTime.Now.Millisecond//ToString("dd_MM_yyyy")
                                          );

                File.WriteAllText(filePath, sb.ToString());

                if (verbose)
                {
                    Console.WriteLine(
                        string.Format("Test {0} of {1}...",
                                      testNumber,
                                      testsCount)
                        );
                }

                testNumber += 1;
            }
        }