Convex Hull Convex Hull
Moderate
Spanish RU EN

Se te dará una lista de puntos en un plano de coordenadas y deberás encontrar la envolvente convexa de dichos puntos. La envolvente convexa de un conjunto de X puntos en el plano euclidiano corresponde al set convexo más pequeño que contiene X. Por ejemplo, cuando X es un subconjunto acotado del plano, la envolvente convexa puede ser visualizada como el contorno formado por una banda elástica estirada alrededor de X. Si un punto se encuentra en el borde, quedará incluido en dicha banda.

Los puntos se presentan como una lista de coordenadas [x, y] en la que x e y son enteros (int). Deberás entregar el resultado como una secuencia de los índices correspondientes a la envolvente, en sentido horario (ver la imagen). La secuencia se inicia desde el punto ubicado en el extremo inferior izquierdo. Recuerda: Deberás devolver una lista de índices y no los puntos de por sí.

convex-hull

convex-hull

Datos de Entrada: Una lista de coordenadas. Cada coordenada es una lista de dos enteros (int).

Salida: La envolvente como una lista de los índices de las coordenadas, a partir de la lista dada.

Ejemplo:

checkio([[7, 6], [8, 4], [7, 2], [3, 2], [1, 6], [1, 8], [4, 9]]) == [4, 5, 6, 0, 1, 2, 3]
checkio([[3, 8], [1, 6], [6, 2], [7, 6], [5, 5], [8, 4], [6, 8]]) == [1, 0, 6, 3, 5,...

Las envolventes convexas tienen aplicaciones prácticas en el reconocimiento de patrones, procesamiento de imágenes, estadísticas, SIG y análisis estático de código por interpretación abstracta. El concepto también sirve como una herramienta y un bloque de construcción para numerosos algoritmos de geometría computacional, tales como el método de pinzas de rotación para el cálculo del ancho y el diámetro de un conjunto de puntos.


2 < len(coordinates) < 10
all(0 < x < 10 and 0 < x < 10 for x, y in coordinates)

You should be an authorized user in order to see the full description and start solving this mission.