Проблема : Подсчитайте количество отверстий в соединенном многоугольнике. Связность многоугольника гарантируется условием, что каждый треугольник во входной триангуляции разделяет по крайней мере 1 сторону с другим треугольником и что существует только один такой связанный набор треугольников.
Входной список L
из n
точек на плоскости , а также список T
из 3-кортежей с элементами из 0...n-1
. Для каждого элемента в T
кортеже (t_1,t_2,t_3)
представлены три вершины (из списка L
) треугольника в триангуляции. Обратите внимание, что это триангуляция в смысле «полигональной триангуляции» , потому что в этом T
перекрытии никогда не будет двух треугольников . Дополнительным условием является то, что вам не придется очищать входные данные L
и T
не содержать повторов.
Пример 1. Если L = {{0,0},{1,0},{0,1},{1,2}}
и T = {{0,1,2},{1,2,3}}
тогда указанный полигон имеет число отверстий 0.
Пример 2 : если 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}}
и 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}}
тогда ввод полигона должен привести к выводу 2.
Задача состоит в том, чтобы написать самую короткую программу (или функцию), которая принимает L
и в T
качестве входных данных и возвращает количество отверстий. «Победитель» будет признан как запись с наименьшим количеством символов (ориентировочная дата окончания 1 июня).
Пример форматирования ввода (обратите внимание на индексирование 0):
0,0
1,0
0,1
1,2
0,1,2
1,2,3
T=1,2,3/1,4,5
подключен, но не подключен к границе)
T=1,2,3/1,2,4/5,6,7/5,6,8
,. Каждый треугольник разделяет ребро с другим треугольником, но триангуляция отключена