একটি চেসবোর্ড ৮x৮ গ্রিড হিসেবে রিপ্রেজেন্ট করা হয়েছে এবং আমাদের বিশপের পজিশন রো এবং কলাম হিসেবে দেওয়া আছে। লক্ষ্য হলো বিশপ এক মুভে মোট কতগুলো স্কয়ার ভিজিট করতে পারে সেটি বের করা। আমরা জানি বিশপ সব ডায়াগোনাল দিকে যেতে পারে (বামে উপরে/নিচে এবং ডানে উপরে/নিচে)।

উদাহরণ ১
ইনপুট
row = 5, column = 4
আউটপুট
বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা: 13
ব্যাখ্যা
উপরের চিত্রে দেখা যাচ্ছে বিশপ যেসব স্কয়ার কভার করতে পারে সেটি ৯।
উদাহরণ ২
ইনপুট
row = 1, column = 1
আউটপুট
বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা: 7
ব্যাখ্যা
যেহেতু এটি কনার পজিশন, তাই বিশপ শুধু একটি ডায়াগোনাল কভার করতে পারে যেতে পারে সর্বোচ্চ ৭টি স্কয়ার।
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে ডায়াগোনাল স্কয়ারগুলো হরিজেন্টাল এবং ভার্টিক্যাল সর্বোচ্চ ও ন্যূনতম স্কয়ার পজিশন ব্যবহার করে ক্যালকুলেট করা হয়।
বিশপের পজিশনের জন্য ইন্টিজার
rowএবংcolumnনিন।squares_visited(int first, int second)ফাংশনটি বিশপের পজিশন গ্রহণ করে ভিজিটযোগ্য স্কয়ারের সংখ্যা রিটার্ন করে।আরম্ভিক কাউন্ট ০ রাখুন।
বাম পাশের ন্যূনতম পজিশন =
min(row, column) - 1।বাম পাশের সর্বোচ্চ পজিশন =
8 - max(row, 9 - column)।ডান পাশের ন্যূনতম পজিশন =
min(row, 9 - column) - 1।ডান পাশের সর্বোচ্চ পজিশন =
8 - max(row, column)।মোট স্কয়ার = উপরের চारों পজিশনের যোগফল।
কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int squares_visited(int first, int second) {
int count = 0;
int min_left = min(first, second) - 1;
int max_left = 8 - max(first, 9 - second);
int max_right = 8 - max(first, second);
int min_right = min(first, 9 - second) - 1;
count = min_left + min_right + max_right + max_left;
return count;
}
int main() {
int row = 3, column = 3;
cout << "বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা: " << squares_visited(row, column);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
বিশপ এক মুভে যেসব স্কয়ার ভিজিট করতে পারে সেটির সংখ্যা: 11