public bool Solve(int[,] sodokuBoard)
        {
            List <ISodokuStrategy> strategies = new List <ISodokuStrategy>()
            {
                new SimpleMarkupStrategy(_sodokuMapper),
                new NakedPairsStrategy(_sodokuMapper)
            };

            var currentState = _sodokuBoardStateManager.GenerateState(sodokuBoard);
            var nextState    = _sodokuBoardStateManager.GenerateState(strategies.First().Solve(sodokuBoard));

            while (!_sodokuBoardStateManager.IsSolved(sodokuBoard) && currentState != nextState)
            {
                currentState = nextState;
                foreach (var strategy in strategies)
                {
                    nextState = _sodokuBoardStateManager.GenerateState(strategy.Solve(sodokuBoard));
                }
            }

            return(_sodokuBoardStateManager.IsSolved(sodokuBoard));
        }