Διαδρομές
/
C#
C#
/
Ασκήσεις
/
Αρπαγή γης στο διάστημα
Αρπαγή γης στο διάστημα

Αρπαγή γης στο διάστημα

Άσκηση εκμάθησης

Εισαγωγή

Δομές

Τα struct της C# σχετίζονται στενά με τις class. Έχουν κατάσταση και συμπεριφορά. Έχουν κατασκευαστές που δέχονται ορίσματα, τα στιγμιότυπά τους μπορούν να ανατεθούν, να ελεγχθούν ως προς την ισότητα και να αποθηκευτούν σε συλλογές.

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"

Οδηγίες

Το τμήμα διεκδικήσεων της Isaacs Asteroid Exploration Co. σου ανέθεσε να βελτιώσεις την απόδοση του συστήματος διεκδικήσεων γης τους.

Κάθε φορά που ένας νέος αστεροειδής είναι έτοιμος για εκμετάλλευση, οι κερδοσκόποι καλούνται να διεκδικήσουν το οικόπεδό τους. Η γη του αστεροειδούς χωρίζεται σε οικόπεδα με 4 πλευρές. Οι κερδοσκόποι διεκδικούν τη γη καθορίζοντας τις διαστάσεις της.

Στόχος σου είναι να αναπτύξεις ένα αποδοτικό σύστημα που θα διαχειρίζεται τον συνωστισμό για γη, ο οποίος στο παρελθόν είχε προκαλέσει την κατάρρευση της ιστοσελίδας.

Η μονάδα μέτρησης είναι τα 100 μέτρα, αλλά μπορείς να την αγνοήσεις σε αυτές τις εργασίες.

1. Όρισε ένα οικόπεδο

Ολοκλήρωσε την υλοποίηση του struct Plot, το οποίο αποτελείται από 4 struct coord (τα οποία δέχεται στον κατασκευαστή του).

2. Οι κερδοσκόποι μπορούν να διεκδικήσουν την απαίτησή τους καθορίζοντας ένα οικόπεδο που προσδιορίζεται από τις διαστάσεις του

Υλοποίησε τη μέθοδο ClaimsHandler.StakeClaim() ώστε να μπορεί να καταχωρηθεί μια διεκδίκηση.

Υλοποίησε τη μέθοδο ClaimsHandler.IsClaimStaked() για να προσδιορίσεις αν μια διεκδίκηση έχει διεκδικηθεί.

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. Έλεγξε αν η τρέχουσα διεκδίκηση είναι ίδια με την προηγούμενη.

Υλοποίησε τη μέθοδο ClaimsHandler.IsLastClaim() για να συγκρίνεις την τρέχουσα διεκδίκηση με την προηγούμενη.

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. Βρες το διεκδικημένο οικόπεδο με τη μεγαλύτερη πλευρά, για ερευνητικούς σκοπούς

Υλοποίησε τη μέθοδο ClaimsHandler.GetClaimWithLongestSide() για να εξετάσεις όλες τις καταχωρημένες διεκδικήσεις και να επιστρέψεις το οικόπεδο με τη μεγαλύτερη πλευρά. Τα δεδομένα συντεταγμένων σε ένα οικόπεδο είναι εγγυημένο ότι σχηματίζουν ένα συνεχές ορθογώνιο σχήμα.

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))
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
C# Exercism

Έτοιμος να ξεκινήσεις την άσκηση Αρπαγή γης στο διάστημα;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.