In C#, gli struct sono strettamente legati alle class. Hanno stato e comportamento. Hanno costruttori che accettano argomenti. Le istanze possono essere assegnate, confrontate per uguaglianza e memorizzate in collezioni.
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"
Il dipartimento delle rivendicazioni della Isaacs Asteroid Exploration Co. ti ha affidato il compito di migliorare le prestazioni del loro sistema di rivendicazione dei terreni.
Ogni volta che un nuovo asteroide è pronto per lo sfruttamento, gli speculatori sono invitati a rivendicare il proprio appezzamento di terreno. Il terreno dell'asteroide è diviso in appezzamenti a quattro lati. Gli speculatori rivendicano il terreno specificandone le dimensioni.
Il tuo obiettivo è sviluppare un sistema performante per gestire la corsa alla terra che in passato ha fatto crashare il sito web.
L'unità di misura è 100 metri, ma può essere ignorata in questi esercizi.
Completa l'implementazione della struct Plot, che comprende 4 struct Coord (che accetta nel suo costruttore).
Implementa il metodo ClaimsHandler.StakeClaim() per consentire la registrazione di una rivendicazione.
Implementa il metodo ClaimsHandler.IsClaimStaked() per determinare se una rivendicazione è stata registrata.
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
Implementa il metodo ClaimsHandler.IsLastClaim() per confrontare la rivendicazione attuale con quella precedente.
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
Implementa il metodo ClaimsHandler.GetClaimWithLongestSide() per esaminare tutte le rivendicazioni registrate e restituire l'appezzamento con il lato più lungo. È garantito che i dati delle coordinate di un appezzamento formino una forma rettangolare contigua.
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))
Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.