コード例 #1
0
 public RubiksCubeSimpleExpressionParser(Core.RubiksCube cube)
     : base(cube)
 {
     _knownExpressions = BuildAndSortByBiggerExpression(
         cube
         , KnowExpressionBuilders
         );
 }
コード例 #2
0
 private static KnowExpression[] BuildAndSortByBiggerExpression(
     Core.RubiksCube cube
     , KnowExpressionBuilder[] values
     )
 {
     return(values
            .SelectMany(m => m.BuildAllVariants(cube.Size))
            .OrderByDescending(m => m.Expression.Length)
            .ToArray());
 }
コード例 #3
0
        private static void Main(string[] args)
        {
            var size = ReadArgs(args);

            var cube = new Core.RubiksCube(size);

            //TODO: Make the formatter something configurable
            var consoleFormatter = new ConsoleFormatter(cube);
            RubiksCubeExpressionParser parser = new RubiksCubeSimpleExpressionParser(cube);

            SetupReadline();

            Console.Clear();

            do
            {
                Console.WriteLine("Use the command \"help\".");
                Console.WriteLine();

                consoleFormatter.Render();

                var input = ReadLine.Read("(move)> ")
                            .Replace("\0", string.Empty);

                //TODO: Implement help command

                if (CheckExitExpression(input))
                {
                    break;
                }

                var result = parser.Parse(input);

                if (!result.Success)
                {
                    Console.Clear();
                    Console.Error.WriteLine(result.ErrorMessage);
                    continue;
                }

                foreach (var movement in result.Movements)
                {
                    cube.Turn(movement);
                }

                Console.Clear();
            } while (true);
        }
コード例 #4
0
 public RubiksCubeExpressionParser(Core.RubiksCube cube)
 {
     Cube = cube;
 }
コード例 #5
0
        public SimpleExpressionsTests()
        {
            var cube = new Core.RubiksCube(3);

            _parser = new RubiksCubeSimpleExpressionParser(cube);
        }
コード例 #6
0
 public ConsoleFormatter(Core.RubiksCube cube)
 {
     _cube = cube;
 }