Open In App

Find the coordinates of the fourth vertex of a square with given 3 vertices using XOR

Last Updated : 07 Dec, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given the coordinates of three points in a plane, find the coordinates of the fourth point that forms a square, suppose take the first vertex as (x1, y1), the second vertex as (x2, y2), the third vertex as (x3, y3) and find the fourth vertex (x4, y4).

Examples:

Input: p1 = { 20, 10 }, p2 = { 10, 20 }, p3 = { 20, 20 }
Output: the fourth point is: {10, 10}
Explanation:

Untitled-Diagramdrawio-(3)

Example-1

Input: p1 = {25, 24}, p2 = {10, 16}, p3 = {10, 24}
Output: the fourth point is: {25, 16}

Approach: To solve the problem using XOR follow the below steps:

  • XOR of the same number gives a result of zero.
  • In the same case. A square has four coordinates if we XOR all coordinates we get a result of zero.
  • we have given three coordinates if we XOR these three coordinates we will get the fourth coordinates.
  • XOR all x coordinates we get the x coordinate of a fourth point.
  • XOR all y coordinates we get the y coordinate of a fourth point.

Below is the implementation for the above aprpoach:

C++




// C++ program to find fourth co-ordinates of the point
#include <bits/stdc++.h>
using namespace std;
struct Point {
    int x, y;
};
int main()
{
    Point p1 = { 20, 10 }, p2 = { 10, 20 }, p3 = { 20, 20 };
 
    // XOR all x coordinates to get fourth x coordinate
    int X = (p1.x ^ p2.x ^ p3.x);
 
    // XOR all y coordinates to get fourth x coordinate
    int Y = (p1.y ^ p2.y ^ p3.y);
    cout << "fouth point is : "
         << "{ " << X << ", " << Y << " }" << endl;
    return 0;
}


Java




/*package whatever //do not write package name here */
// Java program to find the fourth co-ordinates point
import java.io.*;
 
public class GFG {
    static class Point {
        int x, y;
 
        public Point(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    };
    public static void main(String[] args)
    {
        Point p1 = new Point(20, 10),
              p2 = new Point(10, 20),
              p3 = new Point(20, 20);
        // XOR all x coordinates to get fourth x coordinate
        int X = (p1.x ^ p2.x ^ p3.x);
        // XOR all y coordinates to get fourth x coordinate
        int Y = (p1.y ^ p2.y ^ p3.y);
        System.out.println("fourth point is : { " + X + ", "
                           + Y + " }");
    }
}
// This is contributed by spbabaraheem


Python3




class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
 
 
# Given three points
p1 = Point(20, 10)
p2 = Point(10, 20)
p3 = Point(20, 20)
 
# XOR all x coordinates to get the fourth x coordinate
X = p1.x ^ p2.x ^ p3.x
 
# XOR all y coordinates to get the fourth y coordinate
Y = p1.y ^ p2.y ^ p3.y
 
print(f"Fourth point is: {{ {X}, {Y} }}")


C#




using System;
 
struct Point
{
    public int x, y;
}
 
class Program
{
    static void Main()
    {
        Point p1 = new Point { x = 20, y = 10 };
        Point p2 = new Point { x = 10, y = 20 };
        Point p3 = new Point { x = 20, y = 20 };
 
        // XOR all x coordinates to get the fourth x coordinate
        int X = (p1.x ^ p2.x ^ p3.x);
 
        // XOR all y coordinates to get the fourth y coordinate
        int Y = (p1.y ^ p2.y ^ p3.y);
 
        Console.WriteLine("Fourth point is: { " + X + ", " + Y + " }");
    }
}


Javascript




// JavaScript code for the above approach:
 
// Define a structure to represent a Point
class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
}
 
function findFourthPoint(p1, p2, p3) {
    // XOR all x coordinates to get the fourth x coordinate
    const X = p1.x ^ p2.x ^ p3.x;
 
    // XOR all y coordinates to get the fourth y coordinate
    const Y = p1.y ^ p2.y ^ p3.y;
 
    console.log("fourth point is : { " + X + ", " + Y + " }");
}
 
// Driver code
const p1 = new Point(20, 10);
const p2 = new Point(10, 20);
const p3 = new Point(20, 20);
 
// Call the function to find the fourth point
findFourthPoint(p1, p2, p3);


Output

fouth point is : { 10, 10 }





Time Complexity : O(1)
Auxiliary Space : O(1)



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads