Tracks
/
C#
C#
/
Ejercicios
/
Apropiación de tierras en el espacio
Apropiación de tierras en el espacio

Apropiación de tierras en el espacio

Ejercicio de aprendizaje

Introducción

Structs

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"

Instrucciones

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.

1. Define un Plot

Completa la implementación del struct Plot, que consta de 4 structs de coordenadas (que recibe en su constructor).

2. Los especuladores pueden reclamar su terreno especificando una parcela identificada por sus dimensiones

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

3. Comprueba si el reclamo actual es igual que el último.

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

4. Encuentra la parcela reclamada con el lado más largo para fines de investigación

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))
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar Apropiación de tierras en el espacio?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.