Los struct de C# están muy relacionados con las class. Tienen estado y comportamiento. Tienen constructores que reciben argumentos. Las instancias se pueden asignar, comparar por igualdad y guardar 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 reclamos 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. El terreno del asteroide se divide en parcelas de 4 lados. Los especuladores reclaman el terreno especificando sus dimensiones.
Tu objetivo es desarrollar un sistema eficiente que maneje la avalancha de reclamos de tierras que en el pasado hizo que el sitio web se cayera.
La unidad de medida son 100 metros, pero puedes ignorarla en estas tareas.
Completa la implementación del struct Plot, que consta de 4 structs de coordenadas (que recibe en su constructor).
Implementa el método ClaimsHandler.StakeClaim() para permitir que se registre un reclamo.
Implementa el método ClaimsHandler.IsClaimStaked() para determinar si se ha reclamado una parcela.
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 el reclamo actual con el 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 todos los reclamos registrados y devolver la parcela con el lado más largo. Se garantiza que los datos de coordenadas de una parcela forman una figura 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.