コード例 #1
0
        private void solveButton_Click(object sender, EventArgs e)
        {
            if (_solution == null)
            {
                var cube   = rubicsCubeControl.RubiksCubeModel.CloneJson();
                var solver = new BeginnersSolver(cube, (f) => GetFiles(f));
                try
                {
                    _solution = solver.Solve();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Solving failed!");
                    return;
                }
            }

            while (true)
            {
                if (!ProcessSolutionStep())
                {
                    break;
                }
            }

            _solution = null;
            MessageBox.Show("Done!");
        }
コード例 #2
0
        public void Solve_Cube()
        {
            int i = 0;

            while (i < RetriesCount)
            {
                _cube.Reset();
                _cube.Shuffle();

                var cube         = _cube.CloneJson();
                var cubeFallback = _cube.CloneJson();

                var solver = new BeginnersSolver(cube, (f) => GetFiles(f));

                List <MoveAlgorithm> solution;
                bool success;
                solution = solver.SolveCross(out success);

                if (!success)
                {
                    LogError("First cross", i, cubeFallback, solution);
                }

                LogSuccess("First cross");

                cubeFallback = cube.CloneJson();
                solution     = solver.SolveFirstLayer(out success);

                if (!success)
                {
                    LogError("First layer", i, cubeFallback, solution);
                }

                LogSuccess("First layer");

                cubeFallback = cube.CloneJson();
                solution     = solver.SolveSecondLayer(out success);

                if (!success)
                {
                    LogError("Second layer", i, cubeFallback, solution);
                }

                LogSuccess("Second layer");

                cubeFallback = cube.CloneJson();
                solution     = solver.SolveSecondFlatCross(out success);

                if (!success)
                {
                    LogError("Second flat cross", i, cubeFallback, solution);
                }

                LogSuccess("Second flat cross");

                cubeFallback = cube.CloneJson();
                solution     = solver.SolveSecondCross(out success);

                if (!success)
                {
                    LogError("Second cross", i, cubeFallback, solution);
                }

                LogSuccess("Second cross");

                cubeFallback = cube.CloneJson();
                solution     = solver.SolveThirdLayerCubiesLocations(out success);

                if (!success)
                {
                    LogError("Third layer cubies locations", i, cubeFallback, solution);
                }

                LogSuccess("Third layer cubies locations");

                cubeFallback = cube.CloneJson();
                solution     = solver.SolveThirdLayer(out success);

                if (!success)
                {
                    LogError("Third layer", i, cubeFallback, solution);
                }

                LogSuccess("Third layer");

                i++;
            }

            Assert.Pass($"Rubiks cube solving passed for {RetriesCount} tries.");
        }