Проблема : Порахуйте кількість отворів у підключеному багатокутнику. Зв’язаність багатокутника гарантується умовою, що кожен трикутник у вхідній триангуляції ділить щонайменше 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
. Кожен трикутник розділяє ребро з іншим трикутником, але триангуляція відключена