Parcours
/
C#
C#
/
Exercices
/
Conquête de territoires dans l'espace
Conquête de territoires dans l'espace

Conquête de territoires dans l'espace

Exercice d'apprentissage

Introduction

Structures

Les struct de C# sont très proches des class. Elles ont un état et un comportement. Elles ont des constructeurs qui prennent des arguments, et leurs instances peuvent être affectées, comparées par égalité et stockées dans des collections.

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"

Instructions

Le service des revendications d'Isaacs Asteroid Exploration Co. t'a chargé d'améliorer les performances de son système de revendication de terrains.

Chaque fois qu'un nouvel astéroïde est prêt à être exploité, les spéculateurs sont invités à déposer leur revendication sur une parcelle de terrain. Le terrain de l'astéroïde est divisé en parcelles à 4 côtés. Les spéculateurs revendiquent le terrain en précisant ses dimensions.

Ton objectif est de développer un système performant pour gérer la ruée vers la terre qui, par le passé, a fait planter le site web.

L'unité de mesure est 100 mètres, mais on peut l'ignorer dans ces tâches.

1. Définis une parcelle

Complète l'implémentation de la structure Plot, qui comprend 4 structures de coordonnées (qu'elle reçoit dans son constructeur).

2. Les spéculateurs peuvent déposer leur revendication en précisant une parcelle identifiée par ses dimensions

Implémente la méthode ClaimsHandler.StakeClaim() pour permettre d'enregistrer une revendication.

Implémente la méthode ClaimsHandler.IsClaimStaked() pour déterminer si une revendication a été déposée.

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. Vérifie si la revendication actuelle est la même que la précédente.

Implémente la méthode ClaimsHandler.IsLastClaim() pour comparer la revendication actuelle avec la précédente.

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. Trouve la parcelle revendiquée qui a le côté le plus long, à des fins de recherche

Implémente la méthode ClaimsHandler.GetClaimWithLongestSide() pour examiner toutes les revendications enregistrées et renvoyer la parcelle dont le côté est le plus long. Les données de coordonnées d'une parcelle sont garanties de former une forme rectangulaire contiguë.

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))
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
C# Exercism

Prêt à commencer Conquête de territoires dans l'espace ?

Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.