المسارات
/
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. مهمة تحسين أداء نظام المطالبات بالأراضي.

في كل مرة يصبح كويكب جديد جاهزًا للاستغلال، يُدعى المضاربون إلى تسجيل مطالبتهم بقطعة أرض. تُقسَّم أرض الكويكب إلى قطع أرضية رباعية الأضلاع. ويسجّل المضاربون مطالبتهم بالأرض عبر تحديد أبعادها.

هدفك هو تطوير نظام عالي الأداء للتعامل مع التهافت على الأرض الذي أدى في الماضي إلى تعطّل الموقع.

وحدة القياس هي 100 متر، لكن يمكن تجاهلها في هذه المهام.

1. عرّف Plot

أكمل تنفيذ بنية Plot التي تتكوّن من 4 بنى 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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.