Rutas
/
C#
C#
/
Ejercicios
/
Reparto de tierras en el espacio
Reparto de tierras en el espacio

Reparto de tierras en el espacio

Ejercicio de aprendizaje

Introducción

Estructuras

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"

Instrucciones

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.

1. Define una parcela

Completa la implementación de la estructura Plot, que consta de 4 estructuras de coordenadas (que recibe en su constructor).

2. Los especuladores pueden registrar su reclamación especificando una parcela identificada por sus dimensiones

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

3. Comprueba si la reclamación actual es la misma que la última

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

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

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

¿Listo para empezar Reparto 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.