এই নিবন্ধে, শুধুমাত্র দুটি সমান্তরাল রেখা সমস্ত প্রদত্ত স্থানাঙ্ক বিন্দুকে ধরে রাখতে পারে কিনা তা খুঁজে বের করার জন্য আমরা একটি প্রোগ্রাম নিয়ে আলোচনা করব৷
এর জন্য আমাদের একটি অ্যারে দেওয়া হবে, যেমন স্থানাঙ্কগুলি হবে (i, arr[i])। ধরা যাক আমাদের একটি অ্যারে দেওয়া হয়েছে,
arr = {2,6,8,12,14}
তারপরে আমরা এই বিন্দুগুলিকে দুটি সমান্তরাল রেখায় রাখতে পারি, প্রথম লাইনে(1,2), (3,8) রয়েছে এবং (5,14) . দ্বিতীয় লাইনে বাকি স্থানাঙ্ক রয়েছে যেমন (2,6) এবং (4,12)।
প্রদত্ত রেখা দ্বারা তৈরি রেখার ঢালের তুলনা করে এই সমস্যাটি সমাধান করা যেতে পারে। আমরা জানি, (a1,b1) এবং (a2,b2) দ্বারা তৈরি একটি রেখার ঢাল হল (b2-b1)/(a2-a1)।
একইভাবে আমরা প্রদত্ত অ্যারে থেকে তিনটি বিন্দু রাখতে পারি এবং তাদের ঢালের তুলনা করতে পারি। যেহেতু আমাদের কাছে তিনটি বিন্দুর মধ্যে মাত্র দুটি লাইন আছে, তাদের দুটিকে একই লাইনে থাকতে হবে৷
এটি করার জন্য, আমরা তিনটি পয়েন্ট নেব এবং তাদের মাধ্যমে ইন্টারসেপ্ট লাইন গণনা করব। যদি আমরা ইন্টারসেপ্টের ঠিক দুটি ভিন্ন মান পাই, তাহলে অ্যারের বিন্দু দুটি সমান্তরাল রেখায় উপস্থাপন করা যেতে পারে, অন্যথায় নয়৷
শর্ত সম্ভব হলে প্রোগ্রামটি 1 প্রদান করে, অন্যথায় 0।
উদাহরণ
#include <bits/stdc++.h> using namespace std; //to calculate if we get exactly two values of intercept bool is_intercept(double slope, int arr[], int num) { set<double> Lines; for (int i = 0; i < num; i++) Lines.insert(arr[i] - slope * (i)); return Lines.size() == 2; } //to check the slope of the given points bool is_parallel(int arr[], int num) { bool slope1 = is_intercept(arr[1] - arr[0], arr, num); bool slope2 = is_intercept(arr[2] - arr[1], arr, num); bool slope3 = is_intercept((arr[2] - arr[0]) / 2, arr, num); return (slope1 || slope2 || slope3); } int main() { int arr[] = {2,6,8,12,14}; int num = sizeof(arr)/sizeof(arr[0]); cout << (int)is_parallel(arr, num); return 0; }
আউটপুট
1