इसका उद्देश्य दिए गए दो समापन बिंदुओं (x1,y1) और (x2,y2) से होकर गुजरने वाले वर्गों की संख्या निर्धारित करना है।
उन वर्गों की संख्या ज्ञात करने के लिए जिनसे हमारी रेखा गुजरती है, हमें ज्ञात करना होगा:x बिंदुओं (dx) =x2-x1 के बीच का अंतर, y बिंदुओं (dy) =y2-y1 के बीच का अंतर, dx और dy को जोड़ना और घटाना उनका gcd (परिणाम) =dx + dy – gcd (dx, dy).
UnitSquares(int x1, int y1, int x2, int y2) फ़ंक्शन चार मान x1,y1 और x2,y2 लेता है। x2 और x1 के बीच पूर्ण अंतर और y2 और y1 के बीच पूर्ण अंतर की गणना की जाती है। dx और dy को dx,dy के gcd से जोड़ा और घटाया जाता है। परिणाम को उत्तर में संग्रहीत किया जाता है और मुद्रण के लिए मुख्य पर वापस कर दिया जाता है।
int unitSquares(int x1, int y1, int x2, int y2){ int dx = abs(x2 - x1); int dy = abs(y2 - y1); int ans = dx + dy - __gcd(dx, dy); return ans; }
उदाहरण
आइए एक रेखा से गुजरने वाले वर्ग इकाई क्षेत्र की संख्या निर्धारित करने के लिए निम्नलिखित कार्यान्वयन को देखें।
#include<iostream> #include <algorithm> using namespace std; int unitSquares(int x1, int y1, int x2, int y2){ int dx = abs(x2 - x1); int dy = abs(y2 - y1); int ans = dx + dy - __gcd(dx, dy); return ans; } int main(){ int x1 = 3, y1 = 3, x2 = 12, y2 = 6; cout<<"The line passes through "<<unitSquares(x1, y1, x2, y2)<<" squares "; return 0; }
आउटपुट
उपरोक्त कोड निम्न आउटपुट उत्पन्न करेगा -
The line passes through 9 squares