<jupyter_start><jupyter_text>1. Фигуры Есть интерфейс "фигура", который предполагает, что у фигуры можно вычислить площадь.<jupyter_code>using System;
using System.Collections.Generic;

public interface Shape
{
    public double Area();
}<jupyter_output><empty_output><jupyter_text>Необходимо реализовать 2 фигуры: квадрат и прямоугольник.И определить их отношение, что от чего наследуется: квадрат от прямоугольника, прямоугольник от квадрата, никто ни от кого, или друг от друга?У фигуры должно быть можно получить и задать размеры сторон.<jupyter_code>public class Rectangle : ...?, Shape
{
    ...
}

public class Square : ...?, Shape
{
    ...
}<jupyter_output><empty_output><jupyter_text>-----------------------------------2. Бесконечные последовательности Создать метод, генерирующий потенциально бесконечную последовательность квадратов натуральных чисел. То есть метод должен возвращать 1, 4, 9, 16, 25 … Программа не должен потреблять память на хранение всех вычисленных элементов.Нужно воспользоваться опертором yield return https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/yield, смотрите пример.<jupyter_code>public IEnumerable<long> Power2()
{
    ...
}

foreach(long pow in Power2().Skip(100000).Take(10))
{
    Console.WriteLine(pow);
}<jupyter_output><empty_output><jupyter_text>-----------------------------------3. Обработка коллекций<jupyter_code>public enum Gender
{
    Male,
    Female
}

public class Person
{
    public string FullName { get; set; }
    public int Age { get; set; }
    public Gender Gender { get; set; }
}

var persons = new List<Person>
{
    new Person{FullName = "<NAME>", Age = 42, Gender = Gender.Male },
    new Person{FullName = "<NAME>", Age = 24, Gender = Gender.Male },
    new Person{FullName = "<NAME>", Age = 33, Gender = Gender.Female },
    new Person{FullName = "<NAME>", Age = 76, Gender = Gender.Female },
    new Person{FullName = "<NAME>", Age = 5, Gender = Gender.Female },
    new Person{FullName = "<NAME>", Age = 61, Gender = Gender.Male },
    new Person{FullName = "<NAME>", Age = 22, Gender = Gender.Female },
    new Person{FullName = "<NAME>", Age = 45, Gender = Gender.Male },
};<jupyter_output><empty_output><jupyter_text>Выше описан список людей. Необходимо:1) Вычислить средний возраст людей, у которых в имени меньше 4-х букв. (не полном имени, а отдельно, то есть "<NAME>" Имя-Фамилия -- 3 буквы в имени)2) Вывести имена мужчин старше 40 лет.Может сильно помочь описание языка запросов: https://docs.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable?view=netcore-3.1 , https://metanit.com/sharp/tutorial/15.1.phpВ частности функции Select, Where, AverageИ метод String.Split https://docs.microsoft.com/ru-ru/dotnet/api/system.string.split?view=netcore-3.1<jupyter_code>double averageAge = persons....;
Console.WriteLine(averageAge);
Console.WriteLine();

IEnumerable<string> names = persons....;
foreach(string name in names)
{
    Console.WriteLine(name);
}<jupyter_output><empty_output><jupyter_text>-----------------------------------4. Вопрос с подвохомГоворят, такое любят спрашивать на собеседованиях.Добавим в обработку предыдущей коллекции следующее: будем на ходу считать, сколько в коллекции элементов.Проблема в том, что в конце выведется не то, что мы хотим.Почему это происходит? И что надо сделать, чтобы получилось правильное число?<jupyter_code>int elements = 0;
IEnumerable<string> names = persons.Where(x => 
                                          {
                                              ++elements;
                                              return x.Gender == Gender.Female;
                                          })
                                            .Select(x => x.FullName);

Console.WriteLine(elements);<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1361118438406753, 'fraction_numerical': 0.013452914798206279, 'mean_word_length': 3.185430463576159, 'pattern_counts': {'":': 0, '<': 38, '<?xml version=': 0, '>': 40, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 8, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '449337', 'license': 'Apache-2.0', 'n_tokens_mistral': 1355, 'n_tokens_neox': 1366, 'n_words': 315, 'path': 'notebooks/Tasks.ipynb', 'repo_name': 'Ivan-Nebogatikov/SummerSchoolTasks', 'size': '3832'}