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()};"); } }
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}"); }