Encuentra los vértices restantes de un cuadrado a partir de dos vértices dados

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>
Producción

1, 4
3, 2

Tiempo Complejidad: O(1) 
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por cherau y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *