مسیرها
/
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. به شما مأموریت داده است که عملکرد سیستم ثبت ادعای زمین آن‌ها را بهبود ببخشید.

هر بار که سیارکی جدید آماده‌ی بهره‌برداری می‌شود، از سوداگران دعوت می‌شود تا ادعای خود را نسبت به قطعه‌ای زمین ثبت کنند. زمین سیارک به قطعه‌های چهارضلعی تقسیم می‌شود. سوداگران زمین را با مشخص کردن ابعاد آن ادعا می‌کنند.

هدف شما توسعه‌ی سیستمی کارآمد برای مدیریت هجوم ثبت زمین است. این هجوم در گذشته باعث از کار افتادن وب‌سایت شده بود.

واحد اندازه‌گیری ۱۰۰ متر است، اما در این وظیفه‌ها می‌توانید آن را نادیده بگیرید.

1. تعریف یک Plot

پیاده‌سازی struct Plot را کامل کنید. این struct از ۴ struct مختصات تشکیل شده است که در سازنده‌ی خود آن‌ها را می‌پذیرد.

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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.