void GetMaxPolyPower()
        {
            string maxPolyPower = StringRepresentation.Split('.')[3];

            foreach (char ch in maxPolyPower)
            {
                if (!char.IsLetter(ch))
                {
                    throw new ArgumentException("Некорректный ключ", "key");
                }
            }
            int result = 0;

            if (maxPolyPower.Length == 3)
            {
                result = ParseFromWordsToNum(maxPolyPower, false, true, true);
            }
            else
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }

            string strResult = result.ToString().PadLeft(5, '0');

            for (int i = 0; i < 5; i++)
            {
                KeysStringRepresentations[i] += $"{strResult[i]}.";
            }
        }
        List <GenerationKey> GetGenerationKeys()
        {
            List <GenerationKey> result = new List <GenerationKey>();

            GetCountOfRoots();
            GetMaxRootValue();
            GetMaxPolyPower();
            GetBoolSettings();
            GetCountOfInequality();
            string strSeed    = StringRepresentation.Split('.')[9];
            string answerFlag = StringRepresentation.Split('.')[10];

            try
            {
                Seed         = int.Parse(strSeed);
                CountOfTasks = int.Parse(StringRepresentation.Split('.')[8]);
            }
            catch (FormatException)
            {
                throw new ArgumentException("переданный ключ некорректен", "key");
            }

            KeysStringRepresentations[0] += $"{answerFlag}.{strSeed}";
            result.Add(new GenerationKey(KeysStringRepresentations[0]));

            for (int i = 1; i < 5; i++)
            {
                int newSeed = (result[i - 1].Seed + 1) % 1000000;
                KeysStringRepresentations[i] += $"{answerFlag}.{newSeed.ToString().PadLeft(6, '0')}";
                result.Add(new GenerationKey(KeysStringRepresentations[i]));
            }

            return(result);
        }
        bool IsKeyStructureCorrect()
        {
            List <string> values = StringRepresentation.Split('.').ToList();

            if (values.Count != 11)
            {
                return(false);
            }

            foreach (string value in values)
            {
                foreach (char ch in value)
                {
                    if (ch < 'A' && ch > '9' || ch > 'Z' && ch < 'a' || ch > 'z' || ch < '0')
                    {
                        return(false);
                    }
                }
            }

            bool correctSize = values[0].Length == 3 && values[1].Length == 2 && values[2].Length == 3 &&
                               values[3].Length == 3 && values[4].Length == 3 && values[5].Length == 3 &&
                               values[6].Length == 3 && values[7].Length == 3 && values[8].Length == 4 &&
                               values[9].Length == 6 && values[10].Length == 1;

            return(correctSize);
        }
        void GetCountOfInequality()
        {
            string count1 = StringRepresentation.Split('.')[6];

            foreach (char ch in count1)
            {
                if (!char.IsLetter(ch))
                {
                    throw new ArgumentException("Некорректный ключ", "key");
                }
            }
            int result = 0;

            if (count1.Length == 3)
            {
                result = ParseFromWordsToNum(count1, false, true, true);
            }
            else
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }

            string strResult = result.ToString().PadLeft(5, '0');

            for (int i = 0; i < 5; i++)
            {
                KeysStringRepresentations[i] += $"{strResult[i]}";
            }

            string countsOfRoots = StringRepresentation.Split('.')[7];

            foreach (char ch in countsOfRoots)
            {
                if (!char.IsLetter(ch))
                {
                    throw new ArgumentException("Некорректный ключ", "key");
                }
            }
            result = 0;
            if (countsOfRoots.Length == 3)
            {
                result = ParseFromWordsToNum(countsOfRoots, false, true, true);
            }
            else
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }

            strResult = result.ToString().PadLeft(5, '0');
            for (int i = 0; i < 5; i++)
            {
                KeysStringRepresentations[i] += $"{strResult[i]}.";
            }
        }
        void GetCountOfRoots()
        {
            string countsOfRoots = StringRepresentation.Split('.')[0];
            bool   isLetter;

            foreach (char ch in countsOfRoots)
            {
                if (!char.IsLetter(ch))
                {
                    throw new ArgumentException("Некорректный ключ", "key");
                }
            }
            int result = 0;

            if (countsOfRoots.Length == 3)
            {
                result = ParseFromWordsToNum(countsOfRoots, false, true, true);
            }
            else
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }

            string strResult = result.ToString();

            if (strResult.Length != 5)
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }
            else
            {
                for (int i = 0; i < 5; i++)
                {
                    KeysStringRepresentations[i] += $"{strResult[i]}.";
                }
            }
        }
        void GetBoolSettings()
        {
            string maxRoots1 = StringRepresentation.Split('.')[4];

            foreach (char ch in maxRoots1)
            {
                if (!char.IsLetter(ch))
                {
                    throw new ArgumentException("Некорректный ключ", "key");
                }
            }
            int result = 0;

            if (maxRoots1.Length == 3)
            {
                result = ParseFromWordsToNum(maxRoots1, false, true, false);
                string newRes = string.Empty;
                while (result > 0)
                {
                    newRes  = $"{result % 4}{newRes}";
                    result /= 4;
                }
                result = int.Parse(newRes.PadLeft(1, '0'));
            }
            else
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }

            string strResult = result.ToString().PadLeft(5, '0');

            for (int i = 0; i < 5; i++)
            {
                KeysStringRepresentations[i] += $"{strResult[i]}";
            }

            string maxRoots2 = StringRepresentation.Split('.')[5];

            foreach (char ch in maxRoots2)
            {
                if (!char.IsLetter(ch))
                {
                    throw new ArgumentException("Некорректный ключ", "key");
                }
            }
            result = 0;
            if (maxRoots2.Length == 3)
            {
                result = ParseFromWordsToNum(maxRoots2, false, true, true);
            }
            else
            {
                throw new ArgumentException("Некорректный ключ", "key");
            }

            strResult = result.ToString().PadLeft(5, '0');
            for (int i = 0; i < 5; i++)
            {
                KeysStringRepresentations[i] += $"{strResult[i]}.";
            }
        }