Треки
/
C#
C#
/
Вправи
/
Боротьба за землю в космосі
Боротьба за землю в космосі

Боротьба за землю в космосі

Навчальна вправа

Вступ

Структури

C# struct-и тісно повʼязані з class-ами. Вони мають стан і поведінку. Вони мають конструктори, які приймають аргументи, екземпляри можна присвоювати, перевіряти на рівність і зберігати в колекціях.

enum Unit
{
    Kg,
    Lb
}
struct Weight
{
    private double count;
    private Unit unit;

    public Weight(double count, Unit unit)
    {
        this.count = count;
        this.unit = unit;
    }

    public override string ToString()
    {
        return count.ToString() + unit.ToString();
    }
}

new Weight(77.5, Unit.Kg).ToString();
// => "77.6Kg"

Вказівки

Відділ заявок компанії Isaacs Asteroid Exploration Co. доручив нам поліпшити продуктивність їхньої системи реєстрації прав на ділянки.

Щоразу, коли новий астероїд готовий до освоєння, спекулянтів запрошують заявити свої права на ділянку землі. Землю астероїда поділено на ділянки з чотирма сторонами. Спекулянти заявляють права на землю, вказуючи її розміри.

Наша мета - розробити продуктивну систему, яка впорається з напливом охочих, що раніше призводив до падіння сайту.

Одиниця виміру - 100 метрів, але в цих завданнях її можна не враховувати.

1. Визначте ділянку

Завершіть реалізацію структури Plot, що складається з 4 структур координат, які вона приймає у своєму конструкторі.

2. Спекулянти можуть заявити свої права, указавши ділянку, визначену її розмірами

Реалізуйте метод ClaimsHandler.StakeClaim(), щоб дозволити реєструвати заявку.

Реалізуйте метод ClaimsHandler.IsClaimStaked(), щоб визначати, чи заявку вже зареєстровано.

var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsClaimStaked(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true

3. Перевірте, чи поточна заявка збігається з останньою.

Реалізуйте метод ClaimsHandler.IsLastClaim(), щоб порівнювати поточну заявку з попередньою.

var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.IsLastClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
// => true

4. Знайдіть заявлену ділянку з найдовшою стороною для дослідницьких цілей

Реалізуйте метод ClaimsHandler.GetClaimWithLongestSide(), щоб переглянути всі зареєстровані заявки та повернути ділянку з найдовшою стороною. Дані координат у ділянці гарантовано утворюють суміжну прямокутну форму.

var ch = new ClaimsHandler();
ch.StakeClaim(new Plot(new Coord(1,1), new Coord(2,1), new Coord(1,2), new Coord(2,2)));
ch.StakeClaim(new Plot(new Coord(10,1), new Coord(20,1), new Coord(10,2), new Coord(20,2)));
ch.GetClaimWithLongestSide();
// => new Plot(new Coord(1,1), new Coord(20,1), new Coord(1,2), new Coord(2,2))
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
C# Exercism

Час розпочати Боротьба за землю в космосі?

Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.