ট্র্যাক
/
C#
C#
/
অনুশীলনী
/
মহাকাশে জমি দখল
মহাকাশে জমি দখল

মহাকাশে জমি দখল

লার্নিং অনুশীলনী

ভূমিকা

স্ট্রাক্ট

C#-এ struct আর 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"

নির্দেশনা

আইজ্যাকস অ্যাস্টেরয়েড এক্সপ্লোরেশন কোং-এর ক্লেইমস বিভাগ আপনাকে তাদের ভূমি দাবি সিস্টেমের পারফরম্যান্স উন্নত করার দায়িত্ব দিয়েছে।

প্রতিবার যখন কোনো নতুন অ্যাস্টেরয়েড কাজে লাগানোর জন্য প্রস্তুত হয়, তখন স্পেকুলেটরদের জমির একটি প্লটে নিজেদের দাবি জানানোর আমন্ত্রণ জানানো হয়। অ্যাস্টেরয়েডের জমি চার বাহুবিশিষ্ট প্লটে ভাগ করা থাকে। স্পেকুলেটররা জমির মাপ উল্লেখ করে সেই জমির দাবি জানায়।

আপনার লক্ষ্য হলো এমন একটি পারফরম্যান্ট সিস্টেম তৈরি করা, যা জমির সেই হুড়োহুড়ি সামলাতে পারবে, যা অতীতে ওয়েবসাইট ক্র্যাশ করিয়েছিল।

পরিমাপের একক ১০০ মিটার, তবে এই কাজগুলোতে এটি উপেক্ষা করা যায়।

1. একটি Plot ডিফাইন করুন

Plot স্ট্রাক্টের ইমপ্লিমেন্টেশন সম্পূর্ণ করুন, যা ৪টি 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।