O problema : conte o número de furos em um polígono conectado. A conectividade do polígono é garantida pela condição de que cada triângulo na triangulação de entrada compartilhe pelo menos um lado com outro triângulo e que exista apenas um desses conjuntos de triângulos conectados.
Entrada é uma lista L
de n
pontos no plano e uma lista T
de três tuplas com entradas de 0...n-1
. Para cada item T
da tupla (t_1,t_2,t_3)
representa os três vértices (da lista L
) de um triângulo na triangulação. Observe que essa é uma triangulação no sentido de 'triangulação de polígono' , por isso nunca haverá dois triângulos T
nessa sobreposição. Uma estipulação adicional é que você não precisará higienizar a entrada L
e T
não contém repetições.
Exemplo 1 : se L = {{0,0},{1,0},{0,1},{1,2}}
e, em T = {{0,1,2},{1,2,3}}
seguida, o polígono especificado tem uma contagem de orifícios de 0.
Exemplo 2 : Se 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}}
e, em 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}}
seguida, a entrada do polígono deve resultar em uma saída 2.
A tarefa é escrever o programa (ou função) mais curto que recebe L
e T
como entrada e retorna o número de furos. O 'vencedor' será reconhecido como a entrada com o menor número de caracteres (data final prevista para 1º de junho).
Exemplo de formatação de entrada (observe a indexação 0):
0,0
1,0
0,1
1,2
0,1,2
1,2,3
T=1,2,3/1,4,5
está ligado, mas não edge-conectado)
T=1,2,3/1,2,4/5,6,7/5,6,8
,. Cada triângulo compartilha uma borda com outro triângulo, mas a triangulação está desconectada