কম্পিউটার টিউটোরিয়াল

C++-এ দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা গণনা


আমাদের একটি আয়ত দেওয়া আছে যার উচ্চতা (height) এবং প্রস্থ (width)। এই আয়তকে ২D কোঅর্ডিনেট সিস্টেমে বাম-নিচের কোণ (০,০) বিন্দুতে উপস্থাপন করা হয়েছে। লক্ষ্য হলো এই আয়তের ভেতরে কতগুলো রম্বস (rhombi) সম্ভব সেটা গণনা করা, যাতে নিচের শর্তগুলো পূরণ হয়:

  • রম্বসের ক্ষেত্রফল ০ এর চেয়ে বড় হবে।
  • রম্বসের দুটি কর্ণ (diagonals) x এবং y অক্ষের সমান্তরাল হবে।
  • রম্বসের চারটি কোণার কোঅর্ডিনেট পূর্ণসংখ্যা (integer) হবে।

উদাহরণ দিয়ে বুঝি

ইনপুট − length=3, width=3

আউটপুট − দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা: ৪

ব্যাখ্যা − নিচের চিত্রে height=width=3 এর আয়ত এবং ৪টি রম্বস দেখানো হয়েছে যাদের ক্ষেত্রফল >০, কর্ণ দুটি অক্ষের সমান্তরাল এবং কোঅর্ডিনেট পূর্ণসংখ্যা:

প্রথম: [ (1,0), (2,1), (1,2), (0,1) ]
দ্বিতীয়: [ (2,0), (3,1), (2,2), (1,1) ]
তৃতীয়: [ (2,1), (3,2), (2,3), (1,2) ]
চতুর্থ: [ (1,1), (2,1), (1,2), (0,1) ]

ইনপুট − length=2, width=3

আউটপুট − দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা: ২

প্রোগ্রামে ব্যবহৃত পদ্ধতি

প্রথম রম্বস যা শূন্য nahi ক্ষেত্রফল এবং পূর্ণসংখ্যা কোঅর্ডিনেট دارد, সেটি (২,২) বিন্দু থেকে শুরু হয়। i=j=2 থেকে i<=length এবং j<=width পর্যন্ত ঘুরুন। পূর্ণসংখ্যা কোঅর্ডিনেটের জন্য i এবং j কে ২ করে বাড়ান। এই কর্ণ দিয়ে তৈরি রম্বসের সংখ্যা হবে (height-i+1) × (width-j+1)।

  • উচ্চতা এবং প্রস্থ পূর্ণসংখ্যা হিসেবে নিন।
  • possible_rhombus(int height, int width) ফাংশন আয়তের মাপ নিয়ে শর্ত পূরণকারী রম্বসের কাউন্ট রিটার্ন করে।
  • প্রাথমিক কাউন্ট ০ रखুন।
  • i=2 থেকে i<=height এবং j=2 থেকে j<=width পর্যন্ত লুপ চালান।
  • প্রতিটি i,j এর জন্য temp_1 = height-i+1 এবং temp_2 = width-j+1 নিন।
  • temp_1 * temp_2 কে count-এ যোগ করুন।
  • i এবং j কে ২ করে বাড়ান (পূর্ণসংখ্যা কোঅর্ডিনেটের জন্য)।
  • শেষে count রিটার্ন করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

long long possible_rhombus(int height, int width) {
    long long count = 0;
    for (int i = 2; i <= height; i += 2) {
        for (int j = 2; j <= width; j += 2) {
            int temp_1 = height - i + 1;
            int temp_2 = width - j + 1;
            count += temp_1 * temp_2;
        }
    }
    return count;
}

int main() {
    int height = 4, width = 4;
    cout << "Count of number of rhombi possible inside a rectangle of given size are: " << possible_rhombus(height, width);
    return 0;
}

আউটপুট

Count of number of rhombi possible inside a rectangle of given size are: 16
  1. C++-এ দিয়ে गये পয়েন্ট থেকে সম্ভাব্য কোয়াড্রিল্যাটারেল সংখ্যা বের করুন

  2. C++-এ 1 x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা গণনা

  3. C++-এ গ্রিডের মধ্যে নির্দিষ্ট দিকচালনের সম্ভাব্য মোভ সংখ্যা গণনা

  4. সি++-এ আয়তক্ষেত্রে বর্গের সংখ্যা গণনা