Τα 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 μέτρα, αλλά μπορείς να την αγνοήσεις σε αυτές τις εργασίες.
Ολοκλήρωσε την υλοποίηση του struct Plot, το οποίο αποτελείται από 4 struct coord (τα οποία δέχεται στον κατασκευαστή του).
Υλοποίησε τη μέθοδο 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
Υλοποίησε τη μέθοδο 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
Υλοποίησε τη μέθοδο 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))
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.