Ejemplo n.º 1
0
        /// <summary>
        /// Le Main
        /// </summary>
        /// <param name="args">
        /// Program arguments
        /// </param>
        public static void Main(string[] args)
        {
            var counter = 1;

            // repeat until "0 0" is entered for dimension size input
            while (true)
            {
                // read dimension
                Console.Write("Field dimension (format 'n m'): ");
                string dimensionInput = Console.ReadLine();
                if (String.IsNullOrEmpty(dimensionInput))
                {
                    Console.WriteLine("Expecting dimension input");
                    break;
                }

                string[] dimensionParts = dimensionInput.Trim().Split(new[] { ' ' }, 2);
                if (dimensionParts.Length != 2)
                {
                    Console.WriteLine("Invalid input given, expecting dimension in format \"Width Height\" (e.g. \"4 3\"");
                    break;
                }

                int width, height;
                if (!ParseDimension(dimensionParts[0], "Width", out width))
                {
                    break;
                }

                if (!ParseDimension(dimensionParts[1], "Height", out height))
                {
                    break;
                }

                // validate input
                if (width == 0 && height == 0)
                {
                    break;
                }

                string fieldString = ReadField(width, height);

                // init
                var fieldParser = new FieldParser(MaxSize);
                var mineCounter = new MineCounter();
                var fieldSolver = new FieldSolver(mineCounter);

                Field field = fieldParser.ParseAsync(width, height, fieldString).Result;
                char[,] result = fieldSolver.GetTextualRepresentation(field);

                // output
                Console.WriteLine();
                Console.WriteLine("Field #{0}: ", counter);

                WriteResult(result);
                Console.WriteLine();

                ++counter;
            }
        }
Ejemplo n.º 2
0
        public void GetTextualRepresentationWhenFieldGivenThenCharArrayExpected()
        {
            var mines = new List <MinePoint> {
                new MinePoint(0, 0)
            };
            var field = new Field(3, 3, mines);

            var counter = new[, ] {
                { -1, 1, 0 }, { 1, 1, 0 }, { 0, 0, 0 }
            };
            var expected = new[, ] {
                { '*', '1', '.' }, { '1', '1', '.' }, { '.', '.', '.' }
            };

            var mineCounter = MockRepository.GenerateMock <IMineCounter>();

            mineCounter.Stub(c => c.Calculate(Arg <Field> .Is.Equal(field))).Return(counter);

            var solver = new FieldSolver(mineCounter);
            var result = solver.GetTextualRepresentation(field);

            result.Should().Equal(expected);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            for (int i = 2; i < 16; i++)
            {
                FieldGenerator generator = new FieldGenerator(i);

                for (int j = 0; j < 100; j++)
                {
                    Field f = generator.Generate();

                    FieldSolver solver = new FieldSolver(f);
                    if (solver.Solve())
                    {
                        Console.WriteLine($"[{i}][{j}] solved");
                    }
                    else
                    {
                        Console.WriteLine($"[{i}][{j}] not solved");
                    }
                }
            }

            Console.ReadKey();
        }
Ejemplo n.º 4
0
 public void InitWhenNullGivenThenArgumentNullExceptionExpected()
 {
     var solver = new FieldSolver(null);
 }