Os structs do C# são bem parecidos com as classes. Têm estado e comportamento. Têm construtores que recebem argumentos, e as instâncias podem ser atribuídas, comparadas quanto à igualdade e armazenadas 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. encarregou você de melhorar o desempenho do sistema de reivindicação de terras deles.
Toda vez que um novo asteroide fica pronto para exploração, especuladores são convidados a reivindicar seu lote de terra. A terra do asteroide é dividida em lotes de 4 lados. Os especuladores reivindicam o lote especificando suas dimensões.
Seu objetivo é desenvolver um sistema eficiente para lidar com a corrida por terras que, no passado, já derrubou o site.
A unidade de medida é 100 metros, mas pode ser ignorada nestas tarefas.
Complete a implementação da struct Plot, que é composta por 4 structs Coord (que ela recebe em seu construtor).
Implemente o método ClaimsHandler.StakeClaim() para permitir que uma reivindicação seja registrada.
Implemente o método ClaimsHandler.IsClaimStaked() para determinar se uma reivindicação já foi registrada.
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
Implemente 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
Implemente o método ClaimsHandler.GetClaimWithLongestSide() para examinar todas as reivindicações registradas e retornar o lote com o lado mais longo. Os dados de coordenadas de um lote têm a garantia de formar uma 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))
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.