Dadas las coordenadas de dos vértices cualesquiera de un cuadrado (X 1 , Y 1 ) y (X 2 , Y 2 ) , la tarea es encontrar las coordenadas de los otros dos vértices. Si no se puede formar un cuadrado usando estos dos vértices, imprima -1 .
Ejemplos:
Entrada: X 1 = 1, Y 1 = 2, X 2 = 3, Y 2 = 4
Salida: (1, 4), (3, 2)
Explicación:
De la figura anterior los otros dos vértices del cuadrado serán (1, 4) y (3, 2).
Entrada: X 1 = -5, Y 1 = 5, X 2 = 5, Y 2 = -5
Salida: (-5, -5), (5, 5)
Enfoque: El enfoque se basa en el hecho de que la longitud de todos los lados de un cuadrado es igual. Si no se pueden obtener tales vértices para los cuales la longitud de todos los lados sea igual, imprima «-1» . Siga los pasos a continuación para resolver el problema:
- Los dos vértices dados pueden ser los vértices del lado del cuadrado o los vértices de la diagonal.
- Si las coordenadas x de los dos vértices dados son iguales, entonces las coordenadas de los otros dos vértices serán:
(X 1 + Y 2 – Y 1 , Y 1 ) y (X 2 + Y 2 – Y 1 , Y 2 )
- Si las coordenadas y de los dos vértices dados son iguales, entonces las coordenadas de los otros dos vértices serán:
(X 1 , Y 1 + X 2 – X 1 ) y (X 2 , Y 2 + X 2 – X 1 )
- De lo contrario, las coordenadas dadas son de la diagonal del cuadrado. Por tanto, las coordenadas de los otros dos vértices serán:
(X 1 , Y 2 ) y (X 2 , Y 1 )
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <cstdlib> #include <iostream> using namespace std; // Function to find the remaining // vertices of a square void findVertices(int x1, int y1, int x2, int y2) { // Check if the x-coordinates // are equal if (x1 == x2) { cout << (x1 + y2 - y1) << ", " << y1 << endl; cout << (x2 + y2 - y1) << ", " << y2; } // Check if the y-coordinates // are equal else if (y1 == y2) { cout << x1 << ", " << (y1 + x2 - x1) << endl; cout << x2 << ", " << (y2 + x2 - x1); } // If the given coordinates // forms a diagonal of the square else if (abs(x2 - x1) == abs(y2 - y1)) { cout << x1 << ", " << y2 << endl; cout << x2 << ", " << y1; } // Otherwise else // Square does not exist cout << "-1"; } // Driver Code int main() { // Given two vertices int x1 = 1, y1 = 2; int x2 = 3, y2 = 4; findVertices(x1, y1, x2, y2); return 0; }
Java
// Java program for the above approach import java.util.*; class GFG{ // Function to find the remaining // vertices of a square static void findVertices(int x1, int y1, int x2, int y2) { // Check if the x-coordinates // are equal if (x1 == x2) { System.out.print((x1 + y2 - y1) + ", " + y1 + "\n"); System.out.print((x2 + y2 - y1) + ", " + y2); } // Check if the y-coordinates // are equal else if (y1 == y2) { System.out.print(x1 + ", " + (y1 + x2 - x1) + "\n"); System.out.print(x2 + ", " + (y2 + x2 - x1)); } // If the given coordinates // forms a diagonal of the square else if (Math.abs(x2 - x1) == Math.abs(y2 - y1)) { System.out.print(x1 + ", " + y2 + "\n"); System.out.print(x2 + ", " + y1); } // Otherwise else // Square does not exist System.out.print("-1"); } // Driver Code public static void main(String[] args) { // Given two vertices int x1 = 1, y1 = 2; int x2 = 3, y2 = 4; findVertices(x1, y1, x2, y2); } } // This code is contributed by Amit Katiyar
Python3
# Python3 program for the above approach # Function to find the remaining # vertices of a square def findVertices(x1, y1, x2, y2): # Check if the x-coordinates # are equal if (x1 == x2): print((x1 + y2 - y1), ",", y1) print((x2 + y2 - y1), ",", y2) # Check if the y-coordinates # are equal elif (y1 == y2): print(x1, ",", (y1 + x2 - x1)) print(x2, ",", (y2 + x2 - x1)) # If the given coordinates # forms a diagonal of the square elif (abs(x2 - x1) == abs(y2 - y1)): print(x1, ",", y2) print(x2, ",", y1) # Otherwise else: # Square does not exist print("-1") # Driver Code if __name__ == '__main__': # Given two vertices x1 = 1 y1 = 2 x2 = 3 y2 = 4 findVertices(x1, y1, x2, y2) # This code is contributed by mohit kumar 29
C#
// C# program for the above approach using System; class GFG{ // Function to find the remaining // vertices of a square static void findVertices(int x1, int y1, int x2, int y2) { // Check if the x-coordinates // are equal if (x1 == x2) { Console.Write((x1 + y2 - y1) + ", " + y1 + "\n"); Console.Write((x2 + y2 - y1) + ", " + y2); } // Check if the y-coordinates // are equal else if (y1 == y2) { Console.Write(x1 + ", " + (y1 + x2 - x1) + "\n"); Console.Write(x2 + ", " + (y2 + x2 - x1)); } // If the given coordinates // forms a diagonal of the square else if (Math.Abs(x2 - x1) == Math.Abs(y2 - y1)) { Console.Write(x1 + ", " + y2 + "\n"); Console.Write(x2 + ", " + y1); } // Otherwise else // Square does not exist Console.Write("-1"); } // Driver Code public static void Main(String[] args) { // Given two vertices int x1 = 1, y1 = 2; int x2 = 3, y2 = 4; findVertices(x1, y1, x2, y2); } } // This code is contributed by Rajput-Ji
Javascript
<script> // JavaScript program for the above approach // Function to find the remaining // vertices of a square function findVertices(x1, y1, x2, y2) { // Check if the x-coordinates // are equal if (x1 == x2) { document.write((x1 + y2 - y1) + ", " + y1 + "<br>"); document.write((x2 + y2 - y1) + ", " + y2); } // Check if the y-coordinates // are equal else if (y1 == y2) { document.write(x1 + ", " + (y1 + x2 - x1) + "<br>"); document.write(x2 + ", " + (y2 + x2 - x1)); } // If the given coordinates // forms a diagonal of the square else if (Math.abs(x2 - x1) === Math.abs(y2 - y1)) { document.write(x1 + ", " + y2 + "<br>"); document.write(x2 + ", " + y1); } // Otherwise else // Square does not exist document.write("-1"); } // Driver Code // Given two vertices let x1 = 1, y1 = 2; let x2 = 3, y2 = 4; findVertices(x1, y1, x2, y2); // This code is contributed by Surbhi Tyagi. </script>
1, 4 3, 2
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)