Tracks
/
C#
C#
/
Übungen
/
Landraub im Weltraum
Landraub im Weltraum

Landraub im Weltraum

Lernübung

Einführung

Strukturen

C#-structs sind eng verwandt mit classes. Sie haben Zustand und Verhalten. Sie haben Konstruktoren, die Argumente entgegennehmen. Instanzen können zugewiesen, auf Gleichheit geprüft und in Sammlungen gespeichert werden.

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"

Anleitung

Die Anspruchsabteilung von Isaacs Asteroid Exploration Co. hat dich damit beauftragt, die Leistung ihres Systems für Landansprüche zu verbessern.

Jedes Mal, wenn ein neuer Asteroid zur Ausbeutung bereitsteht, werden Spekulanten eingeladen, ihren Anspruch auf ein Stück Land geltend zu machen. Das Land des Asteroiden ist in viereckige Grundstücke unterteilt. Spekulanten beanspruchen das Land, indem sie seine Abmessungen angeben.

Dein Ziel ist es, ein leistungsfähiges System zu entwickeln, das den Ansturm auf das Land bewältigt, der in der Vergangenheit zum Absturz der Website geführt hat.

Die Maßeinheit beträgt 100 Meter, kann in diesen Aufgaben aber ignoriert werden.

1. Definiere einen Plot

Vervollständige die Implementierung der Plot-Struktur, die aus 4 Coord-Strukturen besteht (die sie in ihrem Konstruktor entgegennimmt).

2. Spekulanten können ihren Anspruch geltend machen, indem sie ein durch seine Abmessungen bestimmtes Grundstück angeben

Implementiere die Methode ClaimsHandler.StakeClaim(), damit ein Anspruch registriert werden kann.

Implementiere die Methode ClaimsHandler.IsClaimStaked(), um festzustellen, ob ein Anspruch geltend gemacht wurde.

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. Prüfe, ob der aktuelle Anspruch derselbe ist wie der letzte.

Implementiere die Methode ClaimsHandler.IsLastClaim(), um den aktuellen Anspruch mit dem vorherigen zu vergleichen.

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. Finde das beanspruchte Grundstück mit der längsten Seite zu Forschungszwecken

Implementiere die Methode ClaimsHandler.GetClaimWithLongestSide(), um alle registrierten Ansprüche zu prüfen und das Grundstück mit der längsten Seite zurückzugeben. Die Koordinatendaten eines Grundstücks sind garantiert in einer zusammenhängenden rechteckigen Form.

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))
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Landraub im Weltraum zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.