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"
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.
Complète l'implémentation de la structure Plot, qui comprend 4 structures de coordonnées (qu'elle reçoit dans son constructeur).
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
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
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))
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.