Ingen beskrivning

V.Yakimova 7847cc3573 makaka 9 månader sedan
gitignore.txt b1eb6d37ef что это 10 månader sedan
readme.md 7847cc3573 makaka 9 månader sedan

readme.md

Задание 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