**First exercise: "Номера автобусов"** Задачу я решил еще до того, как вы показывали нам его решение, поэтому я не стал ничего менять. Первым делом я создал переменную, в которую поместил условие. Строчка кода выглядит данным образом: ``` string bukvi = @"^[A-Z]{1}\d{3}[A-Z]{2}$"; ``` Данный способ записи условия нашел на просторах интернета. Затем я использовал функцию: "Regex". Она позволяет проверять, подходят ли введенные вами данные условию. Строчка кода выглядит данным образом: ``` Regex check = new Regex(bukvi); ``` Затем я использовал цикл и проверял входные данные с условием. Строчка кода выглядит данным образом: ``` while (true) { if (check.IsMatch(input)) { Console.WriteLine("True"); break; } ``` **Полный код выглядит следующим образом:** ``` using System.Text.RegularExpressions; string bukvi = @"^[A-Z]{1}\d{3}[A-Z]{2}$"; Regex check = new Regex(bukvi); Console.WriteLine(); string input = Console.ReadLine(); while (true) { if (check.IsMatch(input)) { Console.WriteLine("True"); break; } else { Console.WriteLine("False"); break; } } ``` **Second exercise: "Сжатие бинарных последовательностей"** Сначала я создал переменную: "no_way" и поместил туда весь английский алфавит. Затем запрашиваю данные от пользователя и создаю массив: "splt", в котором разделяю введенную строку, когда встречаю символ: "1". Дальше идет цикл для каждой подстроки в "splt". Затем идет определение длинны строки. И в конце, если длинна строка равна нулю, то вывести: "a", а если нет, то он выведет букву, соответствующей длинны строки. ``` string no_way = "absdefghijklmnopqrstuvwxyz"; string input = Console.ReadLine(); string[] splt = input.Split("1"); for (int i = 0; i < splt.Length-1; i++) { int lng = splt[i].Length; if (splt[i].Length == 0) { Console.Write("a"); } else { Console.Write(no_way[lng]); } } ``` **Third exercise: "Стрелки"** Решение данной задачи абсолютно такое же, как и решение первой. Код выглядит следующим образом: ``` using System.Text.RegularExpressions; string arrow1 = ">>-->"; string arrow2 = "<--<<"; Regex check1 = new Regex(arrow1); Regex check2 = new Regex(arrow2); string input = Console.ReadLine(); while (true) { if (check1.IsMatch(input)) { Console.WriteLine("True"); break; } else if (check2.IsMatch(input)) { Console.WriteLine("True"); break; } else { Console.WriteLine("False"); break; } } ``` **Fourth exercise: "Нумеролог"** Сначала я запросил данные у пользователя и конвертировал их в цифры. Код выглядит следующим образом: ``` Console.Write("input your age: "); string input = Console.ReadLine(); int age = Convert.ToInt32(input); ``` Затем преобразовал введенное количество лет в секунды. Потом идет цикл, проверка данных на число и затем сложил цифры получивсшегося числа. ``` int sum_age = (age*31536000); Console.WriteLine("your age in sec: " + sum_age); int sum = 0; foreach (char digit in input) { if (char.IsDigit(digit)) { sum += int.Parse(digit.ToString()); } Console.Write("I don't know what is it: " + sum); } ``` **Полный код выглядит таким образом:** ``` Console.Write("input your age: "); string input = Console.ReadLine(); int age = Convert.ToInt32(input); int sum_age = (age*31536000); Console.WriteLine("your age in sec: " + sum_age); int sum = 0; foreach (char digit in input) { if (char.IsDigit(digit)) { sum += int.Parse(digit.ToString()); } Console.Write("I don't know what is it: " + sum); } ``` **Fifth exercise: "Перестановка"** Первым делом я запрашиваю данные у пользователя и переношу их на нижний регистр. Как я понял, это нужно для упрощенной работы с данными, ибо без этого моя программа работала не корректно. Код выглядит следующим образом: ``` Console.WriteLine("input first name: "); string first_name = Console.ReadLine().ToLower(); Console.WriteLine("input second name: "); string second_name = Console.ReadLine().ToLower(); ``` Затем идет проверка с помощью метода IaAnagram. Он позволяет проверить можно ли получить одно имя из другого. Код выглядит так: ``` if (IsAnagram(first_name,second_name)) { Console.WriteLine("True"); } else { Console.WriteLine("False"); } ``` Дальше я создаю новые переменные и убираю пробелы с помощью того же метода IsAnagram. Код выглядит следующим образом: ``` static bool IsAnagram(string first_string, string second_string) { first_string = first_string.Replace(" ", string.Empty); second_string = second_string.Replace(" ", string.Empty); ``` Затем я начинаю сравнивать длинну строк. Код выглядит таким образо: ``` if (first_string.Length != second_string.Length) { return false; } ``` Следующим делом я создаю массив и преобразую строки в массив. Код выглядит так: ``` char[] first_array = first_string.ToCharArray(); char[] second_array = second_string.ToCharArray(); ``` Затем я отсортировал данные полученных мной массивов в алфавитный порядок. Код выглядит таким образом: ``` Array.Sort(first_array); Array.Sort(second_array); ``` Следующими строчками кода я просто преобразовываю массивы обратно в строки и сравниваю их. ``` string final_array1 = new string(first_array); string final_array2 = new string(second_array); return final_array1 == final_array2; ``` **Полный код выглядит таким образом:** ``` Console.WriteLine("input first name: "); string first_name = Console.ReadLine().ToLower(); Console.WriteLine("input second name: "); string second_name = Console.ReadLine().ToLower(); if (IsAnagram(first_name,second_name)) { Console.WriteLine("True"); } else { Console.WriteLine("False"); } static bool IsAnagram(string first_string, string second_string) { first_string = first_string.Replace(" ", string.Empty); second_string = second_string.Replace(" ", string.Empty); if (first_string.Length != second_string.Length) { return false; } char[] first_array = first_string.ToCharArray(); char[] second_array = second_string.ToCharArray(); Array.Sort(first_array); Array.Sort(second_array); string final_array1 = new string(first_array); string final_array2 = new string(second_array); return final_array1 == final_array2; } ```