Загрузка данных


using System;

namespace AllTasks
{
    // ============================================
    // TASK 1: Number generators (even, odd, prime, Fibonacci)
    // ============================================
    namespace NumberGenerators
    {
        public class EvenNumbers
        {
            public int[] Generate(int count)
            {
                int[] result = new int[count];
                for (int i = 0; i < count; i++)
                {
                    result[i] = i * 2;
                }
                return result;
            }
        }

        public class OddNumbers
        {
            public int[] Generate(int count)
            {
                int[] result = new int[count];
                for (int i = 0; i < count; i++)
                {
                    result[i] = i * 2 + 1;
                }
                return result;
            }
        }

        public class PrimeNumbers
        {
            public int[] Generate(int count)
            {
                int[] result = new int[count];
                int found = 0;
                int number = 2;

                while (found < count)
                {
                    if (IsPrime(number))
                    {
                        result[found] = number;
                        found++;
                    }
                    number++;
                }
                return result;
            }

            private bool IsPrime(int n)
            {
                if (n < 2) return false;
                for (int i = 2; i * i <= n; i++)
                {
                    if (n % i == 0) return false;
                }
                return true;
            }
        }

        public class FibonacciNumbers
        {
            public int[] Generate(int count)
            {
                int[] result = new int[count];
                if (count >= 1) result[0] = 0;
                if (count >= 2) result[1] = 1;

                for (int i = 2; i < count; i++)
                {
                    result[i] = result[i - 1] + result[i - 2];
                }
                return result;
            }
        }
    }

    // ============================================
    // TASK 2: Geometric shapes
    // ============================================
    namespace Shapes
    {
        public class Rectangle
        {
            public void Draw(int height)
            {
                int width = height * 2;
                for (int i = 0; i < height; i++)
                {
                    for (int j = 0; j < width; j++)
                    {
                        Console.Write("* ");
                    }
                    Console.WriteLine();
                }
            }
        }

        public class Square
        {
            public void Draw(int side)
            {
                for (int i = 0; i < side; i++)
                {
                    for (int j = 0; j < side; j++)
                    {
                        Console.Write("* ");
                    }
                    Console.WriteLine();
                }
            }
        }

        public class Triangle
        {
            public void Draw(int height)
            {
                for (int i = 1; i <= height; i++)
                {
                    // spaces
                    for (int j = 0; j < height - i; j++)
                    {
                        Console.Write("  ");
                    }
                    // stars
                    for (int k = 0; k < 2 * i - 1; k++)
                    {
                        Console.Write("* ");
                    }
                    Console.WriteLine();
                }
            }
        }
    }

    // ============================================
    // TASK 3: Game "Guess the number" (computer guesses)
    // ============================================
    namespace GuessGame
    {
        public class ComputerGuesser
        {
            public void Play()
            {
                Console.WriteLine("\n=== GAME: Computer guesses your number ===");
                Console.Write("Enter minimum number: ");
                int min = int.Parse(Console.ReadLine());
                Console.Write("Enter maximum number: ");
                int max = int.Parse(Console.ReadLine());

                int attempts = 0;
                int currentMin = min;
                int currentMax = max;

                Console.WriteLine($"\nThink of a number between {min} and {max}. I will try to guess!");
                Console.WriteLine("Answer: > (greater), < (less), = (got it)");

                while (currentMin <= currentMax)
                {
                    int guess = (currentMin + currentMax) / 2;
                    attempts++;

                    Console.Write($"\nAttempt {attempts}: Is your number {guess}? (>, <, =): ");
                    string answer = Console.ReadLine();

                    if (answer == "=")
                    {
                        Console.WriteLine($"\nYes! I guessed {guess} in {attempts} attempts!");
                        return;
                    }
                    else if (answer == ">")
                    {
                        currentMin = guess + 1;
                    }
                    else if (answer == "<")
                    {
                        currentMax = guess - 1;
                    }
                    else
                    {
                        Console.WriteLine("Please enter >, < or =");
                        attempts--;
                    }
                }

                Console.WriteLine("\nSomething went wrong. Let's play again!");
            }
        }
    }

    // ============================================
    // TASK 4: Pseudo text generator
    // ============================================
    namespace PseudoText
    {
        public class TextGenerator
        {
            private Random random = new Random();
            private string consonants = "bcdfghjklmnpqrstvwxyz";
            private string vowels = "aeiou";

            public string GenerateWord(int maxLength, int consonantCount, int vowelCount)
            {
                int totalLetters = consonantCount + vowelCount;
                if (totalLetters > maxLength) totalLetters = maxLength;
                if (totalLetters <= 0) return "";

                char[] letters = new char[totalLetters];
                int index = 0;

                // Add consonants
                for (int i = 0; i < consonantCount && index < totalLetters; i++)
                {
                    letters[index] = consonants[random.Next(consonants.Length)];
                    index++;
                }

                // Add vowels
                for (int i = 0; i < vowelCount && index < totalLetters; i++)
                {
                    letters[index] = vowels[random.Next(vowels.Length)];
                    index++;
                }

                // Shuffle letters
                for (int i = 0; i < letters.Length; i++)
                {
                    int j = random.Next(letters.Length);
                    char temp = letters[i];
                    letters[i] = letters[j];
                    letters[j] = temp;
                }

                return new string(letters);
            }

            public string GenerateText(int wordCount, int maxWordLength, int consonantCount, int vowelCount)
            {
                string[] words = new string[wordCount];
                for (int i = 0; i < wordCount; i++)
                {
                    words[i] = GenerateWord(maxWordLength, consonantCount, vowelCount);
                }
                return string.Join(" ", words);
            }

            public void Run()
            {
                Console.WriteLine("\n=== PSEUDO TEXT GENERATOR ===");
                Console.Write("Number of words: ");
                int wordCount = int.Parse(Console.ReadLine());
                Console.Write("Max word length: ");
                int maxLength = int.Parse(Console.ReadLine());
                Console.Write("Number of consonants per word: ");
                int consonantCount = int.Parse(Console.ReadLine());
                Console.Write("Number of vowels per word: ");
                int vowelCount = int.Parse(Console.ReadLine());

                string text = GenerateText(wordCount, maxLength, consonantCount, vowelCount);
                Console.WriteLine($"\nGenerated text:\n{text}");
            }
        }
    }

    // ============================================
    // MAIN PROGRAM (Menu)
    // ============================================
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Clear();
                Console.WriteLine("========== MAIN MENU ==========");
                Console.WriteLine("1. Task 1 - Number generators");
                Console.WriteLine("2. Task 2 - Draw shapes");
                Console.WriteLine("3. Task 3 - Guess number game");
                Console.WriteLine("4. Task 4 - Pseudo text generator");
                Console.WriteLine("0. Exit");
                Console.Write("Choose task: ");

                string choice = Console.ReadLine();

                if (choice == "0") break;

                switch (choice)
                {
                    case "1":
                        Task1Menu();
                        break;
                    case "2":
                        Task2Menu();
                        break;
                    case "3":
                        GuessGame.ComputerGuesser game = new GuessGame.ComputerGuesser();
                        game.Play();
                        Console.WriteLine("\nPress any key to continue...");
                        Console.ReadKey();
                        break;
                    case "4":
                        PseudoText.TextGenerator textGen = new PseudoText.TextGenerator();
                        textGen.Run();
                        Console.WriteLine("\nPress any key to continue...");
                        Console.ReadKey();
                        break;
                    default:
                        Console.WriteLine("Wrong choice!");
                        Console.ReadKey();
                        break;
                }
            }
        }

        static void Task1Menu()
        {
            Console.Clear();
            Console.WriteLine("=== NUMBER GENERATORS ===");
            Console.Write("How many numbers to generate: ");
            int count = int.Parse(Console.ReadLine());

            NumberGenerators.EvenNumbers evenGen = new NumberGenerators.EvenNumbers();
            NumberGenerators.OddNumbers oddGen = new NumberGenerators.OddNumbers();
            NumberGenerators.PrimeNumbers primeGen = new NumberGenerators.PrimeNumbers();
            NumberGenerators.FibonacciNumbers fibGen = new NumberGenerators.FibonacciNumbers();

            int[] even = evenGen.Generate(count);
            int[] odd = oddGen.Generate(count);
            int[] prime = primeGen.Generate(count);
            int[] fib = fibGen.Generate(count);

            Console.WriteLine("\nEven numbers: " + string.Join(", ", even));
            Console.WriteLine("Odd numbers: " + string.Join(", ", odd));
            Console.WriteLine("Prime numbers: " + string.Join(", ", prime));
            Console.WriteLine("Fibonacci numbers: " + string.Join(", ", fib));

            Console.WriteLine("\nPress any key to continue...");
            Console.ReadKey();
        }

        static void Task2Menu()
        {
            Console.Clear();
            Console.WriteLine("=== DRAW SHAPES ===");
            Console.Write("Enter size (height/side): ");
            int size = int.Parse(Console.ReadLine());

            Shapes.Rectangle rect = new Shapes.Rectangle();
            Shapes.Square square = new Shapes.Square();
            Shapes.Triangle triangle = new Shapes.Triangle();

            Console.WriteLine("\nRectangle:");
            rect.Draw(size);

            Console.WriteLine("\nSquare:");
            square.Draw(size);

            Console.WriteLine("\nTriangle:");
            triangle.Draw(size);

            Console.WriteLine("\nPress any key to continue...");
            Console.ReadKey();
        }
    }
}