¡Ayuda! ¡Mi examen de matemáticas llegará pronto y no estudié! 1 Parte del examen es clasificar un cuadrilátero debido a sus coordenadas de vértice, que desafortunadamente no sé cómo hacer. 2
¡Entonces, su desafío es escribir un programa para hacer esto por mí para que no falle!
Desafío
Dados cuatro vértices de modo que no tres de ellos sean colineales, determine la clasificación más específica del cuadrilátero formado por esos cuatro vértices.
Lo que quiero decir con "clasificación más específica" es que, aunque todos los cuadrados son rectángulos, si la forma es un cuadrado, debe indicar que es un cuadrado y no indicar que es un rectángulo.
Entrada
La entrada se dará como cuatro coordenadas (x, y). Puede tomarlos como una lista de longitud 4 de listas / tuplas de longitud 2. Alternativamente, puede tomar la entrada como una lista de las coordenadas xy una lista de las coordenadas y respectivas.
Por ejemplo, si mi forma tiene vértices en los puntos (0, 0)
, (5, 0)
, (6, 1)
, y (1, 1)
, se puede optar por tomar de entrada en cualquiera de los siguientes formatos o algo similar:
[(0, 0), (5, 0), (6, 1), (1, 1)]
([0, 5, 6, 1], [0, 0, 1, 1])
Puede suponer que el cuadrilátero no se auto intersecta y que los puntos se dan en el orden correcto (es decir, dos puntos consecutivos en la entrada estarán conectados por un segmento de línea en el cuadrilátero).
Salida
Necesitará una salida única para cada una de las siguientes clases de cuadriláteros:
- Cuadrado
- Rectángulo
- Rombo
- Paralelogramo
- Trapecio / Trapecio
- Cometa
- Cuadrilátero
Este podría ser el nombre exacto en sí, un personaje, un número entero, etc.
Reglas
- Se aplican lagunas estándar
- Si su lenguaje de programación tiene una función incorporada que realizará esta tarea exacta, esa función no está permitida.
- Se permiten los elementos integrados para encontrar la distancia entre dos puntos.
- Se permiten los elementos integrados para encontrar el ángulo entre dos líneas.
En este punto, si conoce todos los términos, ¡está listo para comenzar a programar! (Los casos de prueba están al final)
Terminología
Esta sección es para cualquier persona que necesite aclaraciones sobre las definiciones de las diferentes formas.
Cuadrado
Un cuadrilátero es un cuadrado si y solo si sus 4 lados tienen la misma longitud y cada par de lados adyacentes es perpendicular (es decir, es un rectángulo y un rombo).
Rectángulo
Un cuadrilátero es un rectángulo si y solo si cada par de lados adyacentes es perpendicular.
Rombo
Un cuadrilátero es un rombo si y solo si sus 4 lados son iguales.
Paralelogramo
Un cuadrilátero es un paralelogramo si y solo si cada par de lados opuestos es paralelo y cada par de ángulos opuestos es igual. Ambas condiciones implican una a la otra, por lo que solo necesita verificar una de ellas.
Trapecio / Trapecio
Un cuadrilátero es un trapecio / trapecio si y solo si tiene al menos un par de lados paralelos.
Cometa
Un cuadrilátero es una cometa si dos pares opuestos de lados adyacentes tienen la misma longitud; es decir, dos de sus lados adyacentes son iguales y los otros dos también son iguales.
Casos de prueba
input as (x, y) * 4 -> full name
[(0, 0), (1, 0), (1, 1), (0, 1)] -> square
[(0, 0), (1, 1), (-1, 3), (-2, 2)] -> rectangle
[(0, 0), (5, 0), (8, 4), (3, 4)] -> rhombus
[(0, 0), (5, 0), (6, 1), (1, 1)] -> parallelogram
[(0, 0), (4, 0), (3, 1), (1, 1)] -> trapezoid/trapezium
[(0, 0), (1, 1), (0, 3), (-1, 1)] -> kite
[(0, 0), (2, 0), (4, 4), (0, 1)] -> quadrilateral
Enlaces (calculadora gráfica Desmos)
Aquí hay enlaces a visualizaciones de cada uno de los casos de prueba.
Cuadrado
Rectángulo
Rombo
Paralelograma
Trapecio / Trapecio
Cometa
Cuadrilátero
Criterios ganadores
Obviamente, no puedo traer una computadora al examen, así que necesito que escribas el código más corto posible para poder memorizarlo. ¡Necesito escribirlo en los márgenes y ejecutarlo usando TryItOffline TM para que quepa en los márgenes, su programa debe ser lo más pequeño posible!
1 Por supuesto que sí: P
2 Por supuesto que sí: P