Задание 1: Номера автобусов
Определить, какие из номеров соответствуют принятому стандарту, а какие нет.
Решение:
using System;
class Program
{
static void Main()
{
while (true)
{
Console.WriteLine("Введите государственный регистрационный номер автобуса (6 символов):");
string input = Console.ReadLine().ToUpper(); // Приводим к верхнему регистру для удобства проверки
if (string.IsNullOrEmpty(input))
{
Console.WriteLine("Программа завершена.");
break;
}
if (IsCorrectBusNumber(input))
{
Console.WriteLine("Номер соответствует стандарту.");
}
else
{
Console.WriteLine("Номер не соответствует стандарту.");
}
}
}
static bool IsCorrectBusNumber(string number)
{
if (number.Length != 6)
{
return false;
}
char[] allowedLetters = { 'A', 'B', 'C', 'E', 'H', 'K', 'M', 'O', 'P', 'T', 'X', 'Y' };
if (!char.IsLetter(number[0]) || !allowedLetters.Contains(number[0]))
{
return false;
}
if (!char.IsDigit(number[1]) || !char.IsDigit(number[2]) || !char.IsDigit(number[3]))
{
return false;
}
if (!char.IsLetter(number[4]) || !char.IsLetter(number[5]) || !allowedLetters.Contains(number[4]) || !allowedLetters.Contains(number[5]))
{
return false;
}
return true;
}
}
Результат работы:
P204BT YES
X182YZ NO
a216bc NO
A216BC YES
ABC216 NO
Задача 2: Сжатие бинарных последовательностей
Напишите программу, которая поможет Славе автоматизировать этот способ сжатия.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите бинарную последовательность:");
string binarySequence = Console.ReadLine();
string compressedSequence = CompressBinarySequence(binarySequence);
Console.WriteLine($"Сжатая последовательность: {compressedSequence}");
}
static string CompressBinarySequence(string binarySequence)
{
string compressedSequence = "";
char currentChar = 'a';
int currentCount = 0;
foreach (char c in binarySequence)
{
if (c == '1')
{
currentCount++;
}
else
{
if (currentCount > 0)
{
compressedSequence += (char)(currentChar + currentCount - 1);
currentChar = 'a';
currentCount = 0;
}
compressedSequence += c;
}
}
if (currentCount > 0)
{
compressedSequence += (char)(currentChar + currentCount - 1);
}
return compressedSequence;
}
}
Результат работы:
101 ab
101001 abc
0000000000000000000000001 y
Задача 3: Стрелки
Требуется найти количество стрел, которые спрятаны в этой последовательности. Стрелы – это подстроки вида ‘>>-->’ и ‘<--<<’ (наконечник стрелы, древко и оперение).
Решение:
using System;
using System.IO;
class Program
{
static void Main()
{
// Считываем входные данные
string input = File.ReadAllText("INPUT.TXT");
// Инициализируем счетчик стрел
int arrowCount = 0;
// Проходим по строке и ищем подстроки '>>-->' и '<--<<'
for (int i = 0; i < input.Length - 4; i++)
{
if (input.Substring(i, 5) == ">>-->")
{
arrowCount++;
}
else if (input.Substring(i, 5) == "<--<<")
{
arrowCount++;
}
}
// Выводим результат в файл
File.WriteAllText("OUTPUT.TXT", arrowCount.ToString());
}
}
Результат работы:
<<<<>>--><--<<--<<>>>--><<<<< 4
Задача 4: Нумеролог
Напишите программу, которая бы делала все расчеты за него.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите время жизни человека в секундах:");
string input = Console.ReadLine();
int destinyNumber = CalculateDestinyNumber(input);
int operationCount = 0;
while (destinyNumber > 9)
{
destinyNumber = CalculateDestinyNumber(destinyNumber.ToString());
operationCount++;
}
Console.WriteLine($"Полученная цифра: {destinyNumber}");
Console.WriteLine($"Количество операций: {operationCount}");
}
static int CalculateDestinyNumber(string input)
{
int sum = 0;
foreach (char c in input)
{
if (char.IsDigit(c))
{
sum += c - '0';
}
}
return sum;
}
}
Результат работы:
1 1 0
10 1 1
99 9 2
Задача 5: Перестановка
Напишите программу, которая проверяет, можно ли получить из одного имени другое путем перестановки его букв. При этом регистром букв нужно пренебречь.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите первое слово:");
string word1 = Console.ReadLine().ToLower();
Console.WriteLine("Введите второе слово:");
string word2 = Console.ReadLine().ToLower();
bool canBePermuted = CheckPermutation(word1, word2);
if (canBePermuted)
{
Console.WriteLine("Одно слово можно получить из другого путем перестановки букв.");
}
else
{
Console.WriteLine("Одно слово нельзя получить из другого путем перестановки букв.");
}
}
static bool CheckPermutation(string word1, string word2)
{
if (word1.Length != word2.Length)
{
return false;
}
int[] charCount = new int[26]; // массив для хранения количества букв в словах
foreach (char c in word1)
{
charCount[c - 'a']++;
}
foreach (char c in word2)
{
charCount[c - 'a']--;
if (charCount[c - 'a'] < 0)
{
return false;
}
}
return true;
}
}
Результат работы:
TomMarvoloRiddle IamLordVoldemort Yes
stop pots Yes
abbc bac No