অ্যারে arr[] দেওয়া আছে, কোঅর্ডিনেট = (i, arr[i])। এই পয়েন্টগুলো কি শুধু দুটি সমান্তরাল রেখায় আঁকা যায়?
সমাধান: তিনটি পয়েন্ট নিয়ে স্লপ مقایনা করুন। যেহেতু দুটি রেখা, তাই তিন পয়েন্টের মাঝপথে দুটি একই রেখায় থাকবে। ইন্টারসেপ্ট বের করে ঠিক দুটি ভিন্ন মান পাওয়া গেলে সম্ভব।
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
bool is_intercept(double slope, int arr[], int n) {
set<double> lines;
for (int i = 0; i < n; i++)
lines.insert(arr[i] - slope * i);
return lines.size() == 2;
}
bool is_parallel(int arr[], int n) {
bool s1 = is_intercept(arr[1]-arr[0], arr, n);
bool s2 = is_intercept(arr[2]-arr[1], arr, n);
bool s3 = is_intercept((arr[2]-arr[0])/2.0, arr, n);
return s1 || s2 || s3;
}
int main() {
int arr[] = {2,6,8,12,14};
int n = sizeof(arr)/sizeof(arr[0]);
cout << (int)is_parallel(arr, n); // 1 = true
return 0;
}
আউটপুট
1