কম্পিউটার

এটি C++ এ একটি সরল রেখা কিনা তা পরীক্ষা করুন


ধরুন আমাদের কাছে (x, y) স্থানাঙ্ক সমন্বিত ডেটা-বিন্দুগুলির একটি তালিকা আছে, আমাদের পরীক্ষা করতে হবে যে ডেটা-বিন্দুগুলি সরলরেখা তৈরি করছে কি না। সুতরাং বিন্দুগুলো যদি [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)] এর মতো হয়, তাহলে তারা সরলরেখা তৈরি করছে .

এটি সমাধান করার জন্য, আমরা প্রতিটি পরপর ডেটাপয়েন্টের মধ্যে পার্থক্য নেব এবং ঢাল খুঁজে বের করব। প্রথমটির জন্য ঢাল খুঁজুন। অন্যান্য সমস্ত পয়েন্টের জন্য ঢাল একই কিনা তা পরীক্ষা করুন। যদি তারা একই হয়, তাহলে কেবল সত্য ফেরত দিন, অন্যথায় মিথ্যা

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int gcd(int a, int b){
      return !b?a:gcd(b,a%b);
   }
   bool checkStraightLine(vector<vector<int>>& c) {
      bool ans =true;
      bool samex = true;
      bool samey = true;
      int a = c[1][0]-c[0][0];
      int b = c[1][1]-c[0][1];
      int cc = gcd(a,b);
      a/=cc;
      b/=cc;
      for(int i =1;i<c.size();i++){
         int x = c[i][0]-c[i-1][0];
         int y = c[i][1]-c[i-1][1];
         int z = gcd(x,y);
         x/=z;
         y/=z;
         ans =ans &&(x == a )&& (y == b );
      }
      return ans;
   }
};
main(){
Solution ob;
vector<vector<int>> c = {{1,2},{2,3},{3,4},{4,5},{5,6},{6,7}};
cout << ob.checkStraightLine(c);
}

ইনপুট

[[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]

আউটপুট

1
(1 indicates true)

  1. C++ এ তিনটি বিন্দু সমরেখার কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. C++ এ একটি লাইনে সর্বোচ্চ পয়েন্ট

  3. একটি লাইন C++ এ একটি বৃত্ত স্পর্শ করে বা ছেদ করে কিনা তা পরীক্ষা করুন

  4. C++-এ idempotent ম্যাট্রিক্স চেক করার প্রোগ্রাম