El problema : cuente el número de agujeros en un polígono conectado. La conectividad del polígono está garantizada por la condición de que cada triángulo en la triangulación de entrada comparte al menos 1 lado con otro triángulo y que solo hay uno de esos conjuntos de triángulos conectados.
La entrada es una lista L
de n
puntos en el plano y una lista T
de 3 tuplas con entradas de 0...n-1
. Para cada elemento en T
la tupla (t_1,t_2,t_3)
representa los tres vértices (de la lista L
) de un triángulo en la triangulación. Tenga en cuenta que esta es una triangulación en el sentido de 'triangulación de polígono' , debido a esto nunca habrá dos triángulos en T
esa superposición. Una estipulación adicional es que no tendrá que desinfectar la entrada L
y T
no contiene repeticiones.
Ejemplo 1 : si L = {{0,0},{1,0},{0,1},{1,2}}
y T = {{0,1,2},{1,2,3}}
luego el polígono especificado tiene un recuento de agujeros de 0.
Ejemplo 2 : si L = {{0,0},{1,0},{2,0},{2,1},{2,2},{1,2},{0,2},{0,1},{.5,.5},{1.5,.5},{1.5,1.5},{.5,1.5}}
y T = {{5,6,11},{5,10,11},{4,5,10},{3,8,10},{2,3,9},{2,8,9},{1,2,8},{0,1,8},{0,8,11},{0,7,11},{6,7,11},{3,4,10}}
luego la entrada del polígono debería dar como resultado una salida de 2.
La tarea es escribir el programa más corto (o función) que toma L
y T
como entrada y devuelve el número de agujeros. El 'ganador' será reconocido como la entrada con el menor recuento de caracteres (fecha de finalización tentativa 1 de junio).
Ejemplo de formato de entrada (tenga en cuenta la indexación 0):
0,0
1,0
0,1
1,2
0,1,2
1,2,3
T=1,2,3/1,4,5
está conectado pero no conectado al borde)
T=1,2,3/1,2,4/5,6,7/5,6,8
,. Cada triángulo comparte una arista con otro triángulo, pero la triangulación está desconectada