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]}."; } }