ট্র্যাক
/
C#
C#
/
অনুশীলনী
/
ফুটবল ম্যাচ রিপোর্ট
ফুটবল ম্যাচ রিপোর্ট

ফুটবল ম্যাচ রিপোর্ট

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

ভূমিকা

switch স্টেটমেন্ট

উইকিপিডিয়া switch স্টেটমেন্টকে এভাবে বর্ণনা করে: "এক ধরনের সিলেকশন কন্ট্রোল মেকানিজম, যা কোনো ভ্যারিয়েবল বা এক্সপ্রেশনের মান দিয়ে প্রোগ্রামের কন্ট্রোল ফ্লো বদলাতে দেয়"।

এই মেকানিজমে নিচের কিওয়ার্ডগুলো জড়িত: switch, case, break এবং default।

সবচেয়ে সহজ রূপে এগুলো একটি প্রিমিটিভ বা স্ট্রিং এক্সপ্রেশন পরীক্ষা করে এবং তার মানের ভিত্তিতে একটি সিদ্ধান্ত নেয়। যেমন:

string direction = GetDirection();
switch (direction)
{
    case "left":
        GoLeft();
        break;
    case "right":
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

সবচেয়ে জটিল রূপে এগুলো ডাউন কাস্টিং case <Type> <variable>: এবং গার্ড (when) নিয়ে আসে।

Animal animal = GetAnimal();

switch (animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}

নির্দেশনা

আপনি এমন একটি সিস্টেম তৈরি করছেন যা একটি ফুটবল ক্লাবের ওয়েবসাইটের কর্মীদের ম্যাচের রিপোর্ট করতে সাহায্য করবে। এই সিস্টেমটি ম্যাচের নানা দিক বিশ্লেষণ করতে পারে, মাঠের ভেতরে ও বাইরে, এবং সেগুলোকে ইভেন্টের একটি ধারায় রূপান্তর করে।

1. খেলোয়াড়দের জার্সি নম্বরের ভিত্তিতে তাদের বর্ণনা আউটপুট করুন

দলটি সবসময় শুধু ৪-৩-৩ ফরমেশনেই খেলে এবং বদলি খেলোয়াড়ের অনুমতি দেওয়া ১৯৬৫ সালের নিয়ম পরিবর্তনের সাথে কখনোই একমত হয়নি, বড় দল তো দূরের কথা।

খেলোয়াড়দের বর্ণনা নিচের মতো:

1 -> "goalie"
2 -> "left back"
3 & 4 -> "center back"
5 -> "right back"
6, 7 & 8 -> "midfielder"
9 -> "left wing"
10 -> "striker"
11 -> "right wing"

জার্সি নম্বরের ভিত্তিতে খেলোয়াড়ের বর্ণনা আউটপুট দিতে স্ট্যাটিক PlayAnalyzer.AnalyzeOnField() মেথডটি ইমপ্লিমেন্ট করুন।

PlayAnalyzer.AnalyzeOnField(10);
// => "striker"

2. অজানা জার্সি নম্বর সামলান

১-১১ পরিসরের বাইরের কোনো জার্সি নম্বর প্রসেস করা হলে UNKNOWN রিপোর্ট করার জন্য PlayAnalyzer.AnalyzeOnField() মেথডটি পরিবর্তন করুন।

3. মাঠের বাইরের কার্যক্রমও কাভারেজে যুক্ত করুন

খেলার মাঠের আশপাশের কার্যক্রম ও চরিত্রগুলোর বর্ণনা আউটপুট দিতে PlayAnalyzer.AnalyzeOffField() মেথডটি ইমপ্লিমেন্ট করুন। এই মেথডটি নানা ধরনের ডেটা গ্রহণ করে, যেগুলো বিশ্লেষণ করে সাংবাদিকদের সাহায্য করার জন্য উপযুক্ত টেক্সটে রূপান্তর করা উচিত।

শুরু করার জন্য, আমরা স্টেডিয়াম সম্পর্কিত ডেটা কাভার করব:

  • স্টেডিয়ামে বর্তমানে উপস্থিত দর্শকের সংখ্যা (যেকোনো int)
  • স্টেডিয়ামের পিএ সিস্টেমে করা ঘোষণা (যেকোনো string)

অজানা ধরনের ডেটা প্রসেস করা উচিত নয়, তাই মেথডটি ভিন্ন ধরনের ডেটা পেলে একটি ফাঁকা স্ট্রিং রিটার্ন করা উচিত।

PlayAnalyzer.AnalyzeOffField(5000);
// => "There are 5000 supporters at the match."

PlayAnalyzer.AnalyzeOffField("5 minutes to go!");
// => "5 minutes to go!"

PlayAnalyzer.AnalyzeOffField(0.5);
// => ""

4. ম্যাচ চলাকালীন ঘটনার রিপোর্ট দিন

ম্যাচ চলাকালীন ঘটা ঘটনাগুলোর বর্ণনা আউটপুট দিতে PlayAnalyzer.AnalyzeOffField() মেথডটি পরিবর্তন করুন।

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

PlayAnalyzer.AnalyzeOffField(new Foul());
// => "The referee deemed a foul."

PlayAnalyzer.AnalyzeOffField(new Injury(8));
// => "Oh no! Player 8 is injured. Medics are on the field."

5. ক্লাব ম্যানেজারদের রিপোর্ট দিন

ম্যাচ চলাকালীন উপস্থিত ক্লাব ম্যানেজারদের উল্লেখ করতে PlayAnalyzer.AnalyzeOffField() মেথডটি পরিবর্তন করুন।

ম্যানেজার হলো Manager টাইপের ইনস্ট্যান্স, তাদের একটি নাম থাকে এবং যে ক্লাবকে তারা পরিচালনা করেন সেই ক্লাবের নামও থাকে। ম্যানেজারের ক্লাব অজানা থাকতে পারে, সেক্ষেত্রে এটি null সেট করা হবে। কোনো ম্যানেজারের ক্লাব জানা না থাকলে, তা বর্ণনার অংশ হওয়া উচিত নয়।

PlayAnalyzer.AnalyzeOffField(new Manager("José Mário dos Santos Mourinho Félix", null));
// => "José Mário dos Santos Mourinho Félix"

PlayAnalyzer.AnalyzeOffField(new Manager("Jürgen Klopp", "Liverpool"));
// => "Jürgen Klopp (Liverpool)"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C# Exercism

ফুটবল ম্যাচ রিপোর্ট শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।