Brak opisu

V.Yakimova 7fe9ecd449 yoda purpurata 9 miesięcy temu
.idea 7fe9ecd449 yoda purpurata 9 miesięcy temu
gitignore.txt b1eb6d37ef что это 10 miesięcy temu
readme.md 7fe9ecd449 yoda purpurata 9 miesięcy temu

readme.md

1. Возраст Васи Пупкина

Вася родился 12 декабря в 1991 году. В 2011 году он обнаружил, что если взять разность суммы квадратов цифр года (1991) его рождения и квадрата дня (12) рождения, то получается число, равное его возрасту (20). Вася захотел узнать, какие еще дни рождения XX века будут обладать таким же свойством в заданный N-ый год XXI века.

Решение:

using System;

class Program
{
    static void Main()
    {
        int birthYear = 1991;
        int birthDay = 12;
        int targetAge = 20;
        int targetCentury = 21;
        
        for (int year = targetCentury * 100; year < (targetCentury + 1) * 100; year++)
        {
            for (int day = 1; day <= 31; day++)
            {
                int squareSum = GetSquareSum(year) - (day * day);
                if (squareSum == targetAge)
                {
                    Console.WriteLine("Possible birthday: " + day + " " + year);
                }
            }
        }
    }

    static int GetSquareSum(int number)
    {
        int sum = 0;
        while (number > 0)
        {
            int digit = number % 10;
            sum += digit * digit;
            number /= 10;
        }
        return sum;
    }
}

Результат работы:

Possible birthday: 1 2104
Possible birthday: 7 2108
Possible birthday: 5 2126
Possible birthday: 1 2140
Possible birthday: 5 2162
Possible birthday: 7 2180

2. Распаковка строки

Будем рассматривать только строчки, состоящие из заглавных английских букв. Например, рассмотрим строку AAAABCCCCCDDDD. Длина этой строки равна 14. Поскольку строка состоит только из английских букв, повторяющиеся символы могут быть удалены и заменены числами, определяющими количество повторений. Таким образом, данная строка может быть представлена как 4AB5C4D. Длина такой строки 7. Описанный метод мы назовем упаковкой строки.

Напишите программу, которая берет упакованную строчку и восстанавливает по ней исходную строку.

Решение:

using System;

class Program
{
    static void Main()
    {
        string packedString = "4AB5C4D";
        string unpackedString = UnpackString(packedString);
        Console.WriteLine(unpackedString);
    }

    static string UnpackString(string packedString)
    {
        string unpackedString = "";
        for (int i = 0; i < packedString.Length; i++)
        {
            char currentChar = packedString[i];
            if (char.IsDigit(currentChar))
            {
                int repeatCount = int.Parse(currentChar.ToString());
                char repeatedChar = packedString[i + 1];
                unpackedString += new string(repeatedChar, repeatCount);
                i++; // Skip the repeated character
            }
            else
            {
                unpackedString += currentChar;
            }
        }
        return unpackedString;
    }
}

Результат работы:

AAAABCCCCCDDDD

3. Быки и коровы

Петя и Вася часто играют в различные логические игры. Недавно Петя поведал Васе о новой игре «Быки и коровы» и теперь они играют в эту игру сутками. Суть игры очень проста: Петя загадывает четырехзначное число, состоящее из различных цифр. Вася отгадывает задуманное Петей число, перебирая возможные варианты. Каждый раз Вася предлагает вариант своего числа, а Петя делает Васе подсказку: сообщает количество быков и коров, после чего Вася с учетом подсказки продолжает отгадывание числа до тех пор, пока не отгадает. Быки – это количество цифр в предложенном Васей числе, совпадающих по значению и стоящих в правильной позиции в задуманном Петей числе. Коровы – количество цифр, совпадающих по значению, но находящихся в неверной позиции. Например, если Петя задумал число 5671, а Вася предложил вариант 7251, то число быков равно 1 (только цифра 1 на своем месте), а число коров равно 2 (только цифры 7 и 5 не на своих местах). Петя силен в математике, но даже он может ошибаться. Помогите Пете написать программу, которая бы по загаданному Петей и предложенному Васей числам сообщала количество быков и коров.

Решение:

using System;

class Program
{
    static void Main()
    {
        string secretNumber = "5671"; // Петя загадывает число
        string guessNumber = "7251"; // Вася предлагает вариант числа

        int bulls = 0;
        int cows = 0;

        for (int i = 0; i < secretNumber.Length; i++)
        {
            if (secretNumber[i] == guessNumber[i])
            {
                bulls++;
            }
            else if (secretNumber.Contains(guessNumber[i].ToString()))
            {
                cows++;
            }
        }

        Console.WriteLine($"Быки: {bulls}");
        Console.WriteLine($"Коровы: {cows}");
    }
}

Результат работы:

Быки: 1
Коровы: 2