public WordByWordField(string letters, IWordProvider wordProvider) //TODO: refactor
        {
            if (wordProvider == null)
            {
                wordProvider = new AnyWordProvider();
            }

            _wordProvider = wordProvider;

            var size = (int)Math.Sqrt(letters.Length);

            string[] lines = new string[size];
            for (int i = 0; i < size; i++)
            {
                lines[i] = letters.Substring(i * size, size);
            }

            _field = new char[size, size];
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    _field[i, j] = lines[i][j];
                }
            }
        }
        public WordByWordField(string[] lines, IWordProvider wordProvider)
        {
            if (lines == null || lines.Length < 2 || lines.Length != lines[0].Length)
            {
                throw new ArgumentException();
            }

            if (wordProvider == null)
            {
                wordProvider = new AnyWordProvider();
            }

            _wordProvider = wordProvider;

            int size = lines.Length;

            _field = new char[size, size];
            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    _field[i, j] = lines[i][j];
                }
            }
        }