As structs do C# estão intimamente relacionadas com as classes. Têm estado e comportamento. Têm construtores que recebem argumentos, e as instâncias podem ser atribuídas, testadas quanto à igualdade e guardadas em coleções.
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"
O departamento de reivindicações da Isaacs Asteroid Exploration Co. pediu-te para melhorares o desempenho do sistema de reivindicação de terrenos deles.
Sempre que um novo asteroide fica pronto para exploração, os especuladores são convidados a reivindicar uma parcela de terreno. O terreno do asteroide está dividido em parcelas de 4 lados. Os especuladores reivindicam o terreno indicando as suas dimensões.
O teu objetivo é desenvolver um sistema eficiente para lidar com a corrida ao terreno que, no passado, fez o site ir abaixo.
A unidade de medida é 100 metros, mas pode ser ignorada nestas tarefas.
Completa a implementação da estrutura Plot, que é composta por 4 estruturas de coordenadas (que recebe no seu construtor).
Implementa o método ClaimsHandler.StakeClaim() para permitir que uma reivindicação seja registada.
Implementa o método ClaimsHandler.IsClaimStaked() para determinar se já foi feita uma reivindicação.
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 o método ClaimsHandler.IsLastClaim() para comparar a reivindicação atual com a 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 o método ClaimsHandler.GetClaimWithLongestSide() para examinar todas as reivindicações registadas e devolver a parcela com o lado mais longo. Os dados de coordenadas de uma parcela estão garantidamente numa forma retangular contígua.
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))
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.