आपण एक लिहू शकता? दोन आयता आच्छादित आहेत का हे तपासण्यासाठी जावा प्रोग्राम. फेसबुक, Amazonमेझॉन, मायक्रोसॉफ्ट इत्यादी टेक दिग्गजांबद्दल हा वारंवार विचारला जाणारा क्रिप्टोग्राफिक प्रश्न आहे. ही एक प्रकारची समस्या आहे जिथे विपरीत किंवा नकारात्मक परिस्थिती शोधणे सोपे आहे, जसे की: जेव्हा आयत आच्छादित होत नाहीत आणि नंतर आयत एकमेकांशी टक्कर देतात हे सिद्ध करण्यासाठी निकाल पलटवा. मी शाळेत माझ्या एका मित्राकडून या समस्येबद्दल प्रथम ऐकले Android गेम विकास जागा: दिलेले आयत एकमेकांना छेदतात का हे शोधण्यासाठी त्याला एक अल्गोरिदम लिहायला सांगितले होते.

त्याला कोणत्याही प्रोग्रामिंग भाषेत अल्गोरिदम लागू करण्याची निवड देण्यात आली जावा:, क:, सी ++: किंवा खोटा पासवर्ड सुद्धा ठीक होता, म्हणून इथल्या भाषेबद्दल काळजी करू नका, हे अल्गोरिदम և लॉजिक बद्दल अधिक आहे. तो एक अलौकिक बुद्धिमत्ता आहे, म्हणून तो त्या मुलाखतीतून यशस्वी झाला, त्याने अल्गोरिदमची कार्यक्षमता आणि अचूकता याबद्दल बोलून मुलाखतकाराला प्रभावित केले.

नंतर, जेव्हा मी त्याला भेटलो, तेव्हा त्याने मला त्याच्या मुलाखतीच्या अनुभवाबद्दल सांगितले, की हा प्रश्न गेम डेव्हलपमेंट क्षेत्रात, इलेक्ट्रॉनिक आर्ट्स, सोनी सारख्या कंपन्यांमध्ये अगदी सामान्य आहे. का? कारण हे देखील एक म्हणून वापरले जाते टक्कर शोध अल्गोरिदम, फार क्लिष्ट नाही, पण सुपर मारिओ ब्रदर्स, पॅक-मा एन, डोंकी कॉंग և ब्रेकआउट सारख्या अनेक आर्केड गेम्ससाठी हे एक सामान्य सामान्य टक्कर शोध अल्गोरिदम आहे.

कारण तुम्ही अक्षरे आणि शत्रूला आयत म्हणून दर्शवू शकता, तेव्हा बाण त्या अक्षराला कधी स्पर्श करतो किंवा दोन आयत एकमेकांना छेदतात हे तपासून तुम्ही शोधू शकता. हा मला एक अतिशय मनोरंजक मुद्दा वाटतो, मी या समस्येकडे लक्ष देण्याचा निर्णय घेतला.

प्रोग्रामिंग / एन्क्रिप्शन मुलाखतीला जाण्यापूर्वी, सर्व उपलब्ध ज्ञान वापरण्यासाठी डेटा स्ट्रक्चर և अल्गोरिदममध्ये शक्य तितका सराव करणे पूर्णपणे आवश्यक आहे. आपण डेटा स्ट्रक्चर आणि अल्गोरिदम वरील सर्वसमावेशक कोर्समध्ये सामील होऊ शकता, जसे की: डेटा स्ट्रक्चर्स – अल्गोरिदम. जावा वापरून डीप डायव्ह: उडेमी वर तुमच्या समजूतदारपणाची पोकळी भरून काढण्यासाठी.

दोन आयत जुळले की नाही हे कसे तपासायचे

दोन आयतांचा योगायोग तपासण्यासाठी अल्गोरिदम अगदी सरळ आहे, परंतु त्यापूर्वी, आपल्याला जावा अनुप्रयोगांमध्ये आयताचे प्रतिनिधित्व कसे करावे हे माहित असणे आवश्यक आहे. ठीक आहे, एक आयत दोन निर्देशांक द्वारे दर्शविले जाऊ शकते: वर डावीकडे आणि खाली उजवीकडे.

समस्येच्या एका भागात तुम्हाला L1, R1 և L2, R2, दोन आयतांचे वरचे डावे आणि खालचे उजवे निर्देशांक दिले जातील, तुम्हाला एक फंक्शन लिहावे लागेल isOlalapping () जे आयत जुळल्यास खरे परतले पाहिजे किंवा नसल्यास खोटे.

बीटीडब्ल्यू, जर तुम्हाला अल्गोरिदम शिकण्यात रस असेल तर मी एक नवीन पुस्तक सुचवेन, कान अल्गोरिदम आदित्य बरगावा यांनी. मी हे पुस्तक गेले दोन आठवडे-रविवार वाचत आहे आणि मी त्याचा पुरेपूर आनंद घेतला.

आयतांचा योगायोग तपासण्यासाठी अल्गोरिदम
खालील चार अटींपैकी एक सत्य असल्यास दोन आयत A և B एकमेकांना आच्छादित किंवा एकमेकांना छेदणार नाहीत.

1. A ची डावी किनार B च्या उजव्या काठाच्या उजवीकडे आहे. या प्रकरणात, पहिला आयत A दुसऱ्या आयत B च्या उजवीकडे पूर्णपणे खालील चित्रात दाखवल्याप्रमाणे आहे.

2. A ची उजवी किनार B च्या डाव्या काठाच्या डावीकडे आहे. या प्रकरणात, पहिला आयत A दुसऱ्या आयत B च्या डावीकडे पूर्णपणे खाली दिलेला आहे.

3.

जावामधील आयतांचा योगायोग तपासण्यासाठी कोड

4. A ची खालची किनार B च्या वरच्या काठावर आहे. या प्रकरणात, पहिला आयत A दुसऱ्या आयत B च्या पूर्ण वर आहे, जसे खालील चित्रात दाखवले आहे.

जावामध्ये दोन आयत जुळले की नाही हे कसे तपासावे

जर वरील चारपैकी कोणतीही स्थिती खरी नसेल, तर दोन आयत आच्छादित होतात कारण खालील चित्रातील पहिली अट तुटलेली आहे, म्हणून आयत A आयत B ला छेदते. जर तुम्हाला प्रोग्रामिंग गेम्समध्ये स्वारस्य असेल, तर मी तुम्हाला सुचवतो गेम प्रोग्रामिंगचे नमुने रॉबर्ट निस्ट्रॉमचे एक अतिशय मनोरंजक पुस्तक गेममधील वास्तविक जगातील उदाहरणांमधून शिकण्यासाठी.

जावामध्ये दोन आयत जुळतात का ते कसे तपासावे - अल्गोरिदम

दोन आयत एकमेकांना छेदतात का हे तपासण्यासाठी जावा प्रोग्राम

या कार्यक्रमात, मी या समस्येचे निराकरण करण्यासाठी मानक जावा एन्क्रिप्शन पद्धतीचा अवलंब केला. मी एका बिंदू वर्गात दोन निर्देशांक एकत्र केले և एका आयतमध्ये दोन बिंदू व्हेरिएबल्स आहेत example उदाहरणार्थ समान () सारख्या पद्धती ज्यात दुसरा आयत जुळतो की नाही हे तपासण्यासाठी. दोन आयत जुळले किंवा नसले तरी, तर्क isOverlapping () पद्धतीने एन्कोड केले आहे, जे समाधान विभागात चर्चा केलेल्या दृष्टिकोनाशी सुसंगत आहे.

/*
 * Java Program to check if two rectangles is intersecting with each
 * other. This algorithm is also used as collision detection
 * algorithm in sprite-based arcade games e.g. Supre Mario Bros
 */

public class Main {

  public static void main(String[] args) {
  Point l1 = new Point(0, 10);
  Point r1 = new Point(10, 0);
  Point l2 = new Point(5, 5);
  Point r2 = new Point(15, 0);

  Rectangle first = new Rectangle(l1, r1);
  Rectangle second = new Rectangle(l2, r2);

  if (first.isOverLapping(second)) {
  System.out
  .println("Yes, two rectangles are intersecting with each other");
  } else {
  System.out
  .println("No, two rectangles are not overlapping with each other");
  }
  }

}

class Point {
  int x;
  int y;

  public Point(int x, int y) {
  super();
  this.x = x;
  this.y = y;
  }
}

class Rectangle {

  private final Point topLeft;
  private final Point bottomRight;

  public Rectangle(Point topLeft, Point bottomRight) {
  this.topLeft = topLeft;
  this.bottomRight = bottomRight;
  }

  /**
  * Java method to check if two rectangle are intersecting to each other.
  * 
  * @param other
  * @return true if two rectangle overlap with each other
  */
  public boolean isOverLapping(Rectangle other) {
  if (this.topLeft.x > other.bottomRight.x // R1 is right to R2
  || this.bottomRight.x < other.topLeft.x // R1 is left to R2
  || this.topLeft.y < other.bottomRight.y // R1 is above R2
  || this.bottomRight.y > other.topLeft.y) { // R1 is below R1
  return false;
  }
  return true;
  }

}

Output
Yes, two rectangles are intersecting with each other

एवढे दोन आयत एकमेकांशी जुळतात की नाही हे कसे तपासायचे. मुलाखतींमध्ये सोडवण्यासाठी ही सर्वात मनोरंजक कोडिंग समस्या आहे. समस्या सोडवणारे अल्गोरिदम विकसित करणे देखील एक चांगला पर्याय आहे. जर तुम्ही अशी समस्या सोडवण्यासाठी धडपडत असाल, तर तुम्ही सर्वसमावेशक डेटा स्ट्रक्चर և समस्या सोडवण्याच्या कोर्स join काही डेटा स्ट्रक्चर लागू करा I मी खाली शेअर केलेल्या अल्गोरिदम समस्या.

अतिरिक्त प्रशिक्षण
डेटा स्ट्रक्चर्स – अल्गोरिदम. जावा वापरून डीप डायव्ह:
अल्गोरिदम և डेटा स्ट्रक्चर्स – भाग 1 2:
Heinz Kabuts द्वारा Java 9 मधील डेटा स्ट्रक्चर्स

इतर: जावा मध्ये कोडिंग समस्या तुम्हाला आवडेल

  • तिसरे व्हेरिएबल न वापरता दोन संख्यांची देवाणघेवाण कशी करावी? (उत्तर:)
  • जावामध्ये इरॅटोस्टेनीस चाळणी कशी लागू करावी? (उपाय)
  • जावा मध्ये प्लस ऑपरेटर न वापरता दोन संख्या कशी जोडावी? (उत्तर:)
  • जावामध्ये बायनरी सर्च ट्री कशी लागू करावी? (उपाय)
  • जावामध्ये बायनरी ट्रीची पूर्व-मागणी कशी करावी? (उपाय)
  • जावामध्ये बायनरी सर्च अल्गोरिदम कसे लागू करावे? (उपाय)
  • जावा मध्ये नियमित संक्रमण कसे करावे? (उपाय)
  • जावा मधील सर्व बायनरी ट्री नोड्स कसे प्रिंट करावे? (उपाय)
  • जावा मध्ये पुनरावृत्ती क्विकॉर्ट कसे लागू करावे? (उपाय)
  • जावा मध्ये बबल वर्गीकरण वापरणारा प्रोग्राम लिहा. (उपाय)
  • जावामध्ये वर्गीकरण अल्गोरिदम कसे लागू करावे? (उत्तर:)

पुनश्च – आपण हे अल्गोरिदम विविध प्रकारच्या आयतांसह देखील वापरून पाहू शकता की ते सर्व परिस्थितींमध्ये कार्य करते की नाही. आपण अधिक वाचू शकता अल्गोरिदम परिचय किंवा: गेम प्रोग्रामिंग टूल्स पुस्तक: