Las struct de C# están estrechamente relacionadas con las class. Tienen estado y comportamiento. Tienen constructores que aceptan argumentos; las instancias se pueden asignar, comparar por igualdad y almacenar en colecciones.
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"
El departamento de reclamaciones de Isaacs Asteroid Exploration Co. te ha encargado mejorar el rendimiento de su sistema de reclamación de tierras.
Cada vez que un nuevo asteroide está listo para su explotación, se invita a los especuladores a reclamar su parcela de terreno. La tierra del asteroide se divide en parcelas de 4 lados. Los especuladores reclaman el terreno especificando sus dimensiones.
Tu objetivo es desarrollar un sistema con buen rendimiento que gestione la avalancha de reclamaciones que en el pasado provocó que la web se cayera.
La unidad de medida son 100 metros, pero se puede ignorar en estas tareas.
Completa la implementación de la estructura Plot, que consta de 4 estructuras de coordenadas (que recibe en su constructor).
Implementa el método ClaimsHandler.StakeClaim() para permitir que se registre una reclamación.
Implementa el método ClaimsHandler.IsClaimStaked() para determinar si se ha registrado una reclamación.
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 el método ClaimsHandler.IsLastClaim() para comparar la reclamación actual con la anterior.
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 el método ClaimsHandler.GetClaimWithLongestSide() para examinar todas las reclamaciones registradas y devolver la parcela con el lado más largo. Se garantiza que los datos de coordenadas de una parcela forman una forma rectangular 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))
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.