Se le proporciona una matriz / lista / vector de pares de enteros que representan coordenadas cartesianas de puntos en un plano euclidiano 2D; todas las coordenadas están entre y , se permiten duplicados. Encuentre el área del casco convexo de esos puntos, redondeado al entero más cercano; un punto medio exacto debe redondearse al entero par más cercano. Puede usar números de coma flotante en cálculos intermedios, pero solo si puede garantizar que el resultado final siempre será correcto. Este es el código de golf , por lo que gana el programa correcto más corto.
El casco convexo de un conjunto de puntos es el más pequeño conjunto convexo que contiene . En el plano euclidiano, para cualquier punto único , es el punto mismo; para dos puntos distintos, es la línea que los contiene, para tres puntos no colineales, es el triángulo que forman, y así sucesivamente.
Una buena explicación visual de lo que es un casco convexo, se describe mejor como imaginar todos los puntos como clavos en una tabla de madera, y luego estirar una banda elástica alrededor de ellos para encerrar todos los puntos:
Algunos casos de prueba:
Input: [[50, -13]]
Result: 0
Input: [[-25, -26], [34, -27]]
Result: 0
Input: [[-6, -14], [-48, -45], [21, 25]]
Result: 400
Input: [[4, 30], [5, 37], [-18, 49], [-9, -2]]
Result: 562
Input: [[0, 16], [24, 18], [-43, 36], [39, -29], [3, -38]]
Result: 2978
Input: [[19, -19], [15, 5], [-16, -41], [6, -25], [-42, 1], [12, 19]]
Result: 2118
Input: [[-23, 13], [-13, 13], [-6, -7], [22, 41], [-26, 50], [12, -12], [-23, -7]]
Result: 2307
Input: [[31, -19], [-41, -41], [25, 34], [29, -1], [42, -42], [-34, 32], [19, 33], [40, 39]]
Result: 6037
Input: [[47, 1], [-22, 24], [36, 38], [-17, 4], [41, -3], [-13, 15], [-36, -40], [-13, 35], [-25, 22]]
Result: 3908
Input: [[29, -19], [18, 9], [30, -46], [15, 20], [24, -4], [5, 19], [-44, 4], [-20, -8], [-16, 34], [17, -36]]
Result: 2905
[[0, 0], [1, 1], [0, 1]]
Respuestas:
SQL Server 2012+, 84 bytes
Utiliza las funciones de geometría y los agregados en SQL Server. Las coordenadas son de tabla
A
con columnasx
yy
.fuente
Java 10,
405... ya no encajaba; ver historial de edición ..317316 bytes-52 bytes gracias a @ OlivierGrégoire
-3 bytes gracias a @PeterTaylor
-7 bytes gracias a @ceilingcat
Pruébalo en línea.
O 299 bytes sin redondear .
Explicación:
Hay tres pasos para hacer:
Para calcular las coordenadas que forman parte del casco convexo, utilizamos el siguiente enfoque:
En cuanto al código:
fuente
Wolfram Language (Mathematica) , 27 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
191189 bytesImplementa la marcha Jarvis (también conocido como algoritmo de envoltura de regalos).
Pruébalo en línea!
O 170 bytes sin el engorroso esquema de redondeo.
fuente
R ,
858178 bytesPruébalo en línea!
Toma la entrada como una matriz de 2 columnas: primero para
x
, segundo paray
. De hecho, Rround
utiliza el método de redondeo del banco, por lo que tenemos mucha suerte aquí.Gracias a Giuseppe por -3 bytes.
fuente
[Paquete R + sp], 55 bytes
Pruébalo en RDRR
Una función que toma la matriz ans 2 y devuelve el área redondeada. Esto usa el
sp
paquete. Sedrop=F
necesita para manejar un caso de coordenadas. RDRR utilizado para la demostración ya que TIO carece delsp
paquete.fuente