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

চার বিন্দু বর্গ গঠন করে কিনা (Check if given four points form a Square)


একটি ২D প্লেনে চারটি বিন্দু দেওয়া আছে। এই অ্যালগরিদম চেক করবে চারটি বিন্দু বর্গ গঠন করছে কিনা।

বর্গ চেক করার জন্য নিচের শর্তগুলো মিলাতে হবে:

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

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

ইনপুট: চারটি বিন্দু {(20, 10), (10, 20), (20, 20), (10, 10)} আউটপুট: বিন্দুগুলো বর্গ গঠন করছে।

অ্যালগরিদম

isFormingSquare(p1, p2, p3, p4)

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

ইনপুট: চারটি বিন্দু।

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

শুরু 
  dist12 := squareDist(p1, p2) 
  dist13 := squareDist(p1, p3) 
  dist14 := squareDist(p1, p4) 
  যদি dist12 = dist13 এবং 2*dist12 = dist14, তবে 
    dist := squareDist(p2, p4) 
    সত্য ফেরত দিন যখন dist = squareDist(p3, p4) এবং dist = dist12 
  যদি dist13 = dist14 এবং 2*dist13 = dist12, তবে 
    dist := squareDist(p2, p3) 
    সত্য ফেরত দিন যখন dist = squareDist(p2, p4) এবং dist = dist13 
  যদি dist12 = dist14 এবং 2*dist12 = dist13, তবে 
    dist := squareDist(p2, p3) 
    সত্য ফেরত দিন যখন dist = squareDist(p3, p4) এবং dist = dist12 
  মিথ্যা ফেরত দিন 
শেষ

উদাহরণ

#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) {   //চেক চারটি বিন্দু বর্গ গঠন করছে কিনা   int dist12 = squareDist(p1, p2);    // p1 থেকে p2-এর দূরত্ব   int dist13 = squareDist(p1, p3);    // p1 থেকে p3-এর দূরত্ব   int dist14 = squareDist(p1, p4);    // p1 থেকে p4-এর দূরত্ব   //যখন p1-p2 এবং p1-p3-এর দৈর্ঘ্য একই, এবং (p1-p4)-এর বর্গ = 2*(p1-p2)   if (dist12 == dist13 && 2*dist12 == dist14) {     int dist = squareDist(p2, p4);     return (dist == squareDist(p3, p4) && dist == dist12);   }   //অন্য সব কনবিনেশনের জন্য একই শর্ত   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 অক্ষের সমান্তরাল বর্গ বানে