কম্পিউটার

প্রদত্ত চারটি পয়েন্ট একটি বর্গক্ষেত্র তৈরি করে কিনা তা পরীক্ষা করুন


একটি 2d ​​সমতলে, চারটি পয়েন্ট দেওয়া হয়৷ এই অ্যালগরিদমটি পরীক্ষা করবে যে চারটি বিন্দু একটি বর্গক্ষেত্র তৈরি করছে কি না।

একটি বর্গক্ষেত্র পরীক্ষা করার জন্য আমাদের এই শর্তগুলির সাথে মিলতে হবে -

  • প্রদত্ত বিন্দু দ্বারা গঠিত চারটি বাহু একই।
  • সমস্ত দুটি সংযোগকারী দিক সমকোণ।

ইনপুট এবং আউটপুট

Input:
Four points {(20, 10), (10, 20), (20, 20), (10, 10)}
Output:
Points are forming a square.

অ্যালগরিদম

isFormingSquare(p1, p2, p3, p4)

এই পদ্ধতিতে, আমরা একটি পদ্ধতি স্কোয়ারডিস্ট (p1, p2) ব্যবহার করব, এটি দুটি প্রদত্ত বিন্দুর বর্গ দূরত্ব প্রদান করবে।

ইনপুট: চার পয়েন্ট।

আউটপুট: সত্য যখন প্রদত্ত বিন্দু একটি বর্গক্ষেত্র গঠন করে।

Begin
   dist12 := squareDist(p1, p2)
   dist13 := squareDist(p1, p3)
   dist14 := squareDist(p1, p4)

   if dist12 = dist13 and 2*dist12 = dist14, then
      dist := squareDist(p2, p4)
      return true when dist = squareDist(p3, p4) and dist = dist12
   if dist13 = dist14 and 2*dist13 = dist12, then
      dist := squareDist(p2, p3)
      return true when dist = squareDist(p2, p4) and dist = dist13
   if dist12 = dist14 and 2*dist12 = dist13, then
      dist := squareDist(p2, p3)
      return true when dist = squareDist(p3, p4) and dist = dist12
   return false
End

উদাহরণ

#include<iostream>
using namespace std;

struct Point {
   int x, y;
};

int squareDist(Point p, Point q) {
   return (p.x - q.x)*(p.x - q.x) + (p.y - q.y)*(p.y - q.y);
}

bool isSquare(Point p1, Point p2, Point p3, Point p4) {    //check four points are forming square or not
   int dist12 = squareDist(p1, p2);     // distance from p1 to p2
   int dist13 = squareDist(p1, p3);     // distance from p1 to p3
   int dist14 = squareDist(p1, p4);     // distance from p1 to p4

   //when length of p1-p2 and p1-p3 are same, and square of (p1-p4) = 2*(p1-p2)
   if (dist12 == dist13 && 2*dist12 == dist14) {
      int dist = squareDist(p2, p4);
      return (dist == squareDist(p3, p4) && dist == dist12);
   }

   //same condition for all other combinations
   if (dist13 == dist14 && 2*dist13 == dist12) {
      int dist = squareDist(p2, p3);
      return (dist == squareDist(p2, p4) && dist == dist13);
   }

   if (dist12 == dist14 && 2*dist12 == dist13) {
      int dist = squareDist(p2, p3);
      return (dist == squareDist(p3, p4) && dist == dist12);
  }
  return false;
}

int main() {
   Point p1 = {20, 10}, p2 = {10, 20}, p3 = {20, 20}, p4 = {10, 10};
   if(isSquare(p1, p2, p3, p4))
      cout << "Points are forming a square.";
   else
      cout << "Points are not forming a square";
}

আউটপুট

Points are forming a square.

  1. প্রদত্ত গ্রাফটি গাছ কিনা তা পরীক্ষা করুন

  2. একটি প্রদত্ত স্ট্রিং এর অক্ষরগুলি পাইথনে একটি প্যালিনড্রোম গঠনের জন্য পুনর্বিন্যাস করা যেতে পারে কিনা তা পরীক্ষা করুন

  3. বিন্দুর তালিকা পাইথনে সরলরেখা তৈরি করে কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. চারটি বিন্দুর সন্ধান করুন যাতে তারা একটি বর্গক্ষেত্র তৈরি করে যার বাহুগুলি পাইথনে x এবং y অক্ষের সমান্তরাল।