গো গণনা

গো গণনা

কঠিন

নির্দেশনা

গো বোর্ডে স্কোর হওয়া পয়েন্টগুলো গুনুন।

গো গেমে (যা baduk, igo, cờ vây এবং wéiqí নামেও পরিচিত) পয়েন্ট পাওয়া যায় আপনার পাথর দিয়ে খালি ছেদবিন্দুগুলো সম্পূর্ণভাবে ঘিরে ফেলার মাধ্যমে। একজন খেলোয়াড়ের ঘেরা ছেদবিন্দুগুলো তার এলাকা হিসেবে পরিচিত।

প্রতিটি খেলোয়াড়ের এলাকা হিসাব করুন। আপনি ধরে নিতে পারেন, শত্রুর এলাকায় আটকে পড়া যেকোনো পাথর ইতিমধ্যে বোর্ড থেকে সরিয়ে ফেলা হয়েছে।

নির্দিষ্ট একটি স্থানাঙ্ক যে এলাকার মধ্যে পড়ে, সেটি নির্ধারণ করুন।

একসাথে একাধিক খালি ছেদবিন্দু ঘেরা হতে পারে, আর ঘেরার জন্য শুধু আনুভূমিক ও উল্লম্ব প্রতিবেশী গণ্য হয়। নিচের চিত্রে যে পাথরগুলো গুরুত্বপূর্ণ সেগুলো "O" দিয়ে চিহ্নিত, আর যেগুলো গুরুত্বপূর্ণ নয় সেগুলো "I" (উপেক্ষিত) দিয়ে চিহ্নিত। খালি জায়গাগুলো খালি ছেদবিন্দু নির্দেশ করে।

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

আরও নিখুঁতভাবে বলতে গেলে, একটি খালি ছেদবিন্দু কোনো খেলোয়াড়ের এলাকার অংশ হবে যদি তার সব প্রতিবেশী হয় ওই খেলোয়াড়ের পাথর, নয়তো ওই খেলোয়াড়ের এলাকার অংশ এমন খালি ছেদবিন্দু।

আরও তথ্যের জন্য দেখুন উইকিপিডিয়া বা Sensei's Library।

ইঙ্গিত

এই অনুশীলনীটি সম্পূর্ণ করতে, আপনাকে নিচের ফাংশনগুলো ইমপ্লিমেন্ট করতে হবে:

  • territories প্রতিটি টেরিটরির বিন্দুগুলোর কোঅর্ডিনেট (1-ভিত্তিক, উপরের বাম কোণটি (1,1)) এবং টেরিটরিটির "মালিক" কে, সেটিও রিটার্ন করে।

  • territoriesFor কোঅর্ডিনেটটি যে টেরিটরিতে আছে, সেই টেরিটরি এবং টেরিটরিটির মালিককে রিটার্ন করে। যদি কোঅর্ডিনেটটি কোনো খালি অবস্থান নির্দেশ না করে, তাহলে কিছুই না রিটার্ন করে।

একটি টেরিটরি কোনো একজন খেলোয়াড়ের মালিকানায় থাকে, যদি ওই খেলোয়াড়ের পাথরগুলোই টেরিটরিটির সংলগ্ন একমাত্র পাথর হয়।

টাইপ সিগনেচারগুলো ইতিমধ্যেই দেওয়া আছে, তবে ফাংশনগুলো ডিফাইন করতে হবে আপনাকেই।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Haskell Exercism

গো গণনা শুরু করতে প্রস্তুত?

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