public void Zakoulochki(int problemId, bool zakoulochki)
        {
            var solver = new ParallelDeepWalkSolver(2, new Estimator(false, zakoulochki, false), usePalka: false, useWheels: false, useDrill: true, new []{BoosterType.Cloning});

            var solved = SolveOneProblem(solver, problemId);

            var nextTime = solved.CalculateTime();
            Console.WriteLine(nextTime);
        }
 public void CompareParallel(string problemIds)
 {
     var parallelSolver = new ParallelDeepWalkSolver(2, new Estimator(collectFastWheels: false, zakoulochki: true, collectDrill: false), usePalka: false, useWheels: false, useDrill: false, new BoosterType[0]);
     
     foreach (var problemId in problemIds.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse))
     {
         var parallelSolved = SolveOneProblem(parallelSolver, problemId);
         Console.Out.WriteLine($"{problemId:000}: parallelSolvedTime: {parallelSolved.CalculateTime()};");
     }
 }
コード例 #3
0
        public void SolvePuzzleOneWithWheelsRandom()
        {
            //var seed = Guid.NewGuid().GetHashCode();
            var seed = -1635707027;

            Console.Out.WriteLine($"Seed: {seed}");
            var solver0 = new StupidSolver(true);
            var solver1 = new ParallelDeepWalkSolver(2, new Estimator(false, false, false), usePalka: false, useWheels: false, useDrill: false, new BoosterType[0]);
            var solver  = new RandomWalkSolver(2, new Estimator(true, false, false), new Random(seed), 100, usePalka: true, useWheels: true);

            SolvePuzzleProblem(solver, 2);
        }
        // [TestCase(214, 20066, "CC")]
        // [TestCase(214, 20066, "CCC")]
        public void SolveOne(int problemId, int prevBestTime, string buy, bool useWheels, bool useDrill)
        {
            var solver = new ParallelDeepWalkSolver(2, new Estimator(useWheels, false, false), usePalka: false, useWheels: useWheels, useDrill: useDrill, buy.ToBuyBoosters());

            var solved = SolveOneProblem(solver, problemId);
            
            var nextTime = solved.CalculateTime();
            var map = ProblemReader.Read(problemId).ToState().Map;

            var mapScore = Math.Log(map.SizeX * map.SizeY, 2) * 1000;

            var prevScore = Math.Ceiling(mapScore * nextTime / prevBestTime);
            var nextScore = Math.Ceiling(mapScore);

            var cost = solved.BuyCost();
            var nextScoreWithCost = nextScore - cost;

            Console.Out.WriteLine($"{(nextScoreWithCost - prevScore > 0 ? "WIN" : "---")} Delta={nextScoreWithCost - prevScore}; PrevScore={prevScore};" +
                                  $"NextScore={nextScore}; Cost: {cost}; NextScoreWithCost={nextScoreWithCost}; " +
                                  $"PrevBestTime={prevBestTime}; NextTime={nextTime}");
        }