Ти фермер, і твоя зграя овець втекла! О ні!
Округлюйте цих овець, будуючи огорожі, щоб їх містити. Як фермер з бюджету, ви хочете використовувати якнайменший об'єм паркану. На щастя для вас, вони не найрозумніші вівці в світі і не намагаються рухатися після втечі.
Завдання
Враховуючи список координат, виведіть найменшу кількість сегментів огорожі, необхідних для утримання овець.
Правила
- Вівці містяться, якщо вони не можуть скинути (немає отворів у огорожі).
- Вам не доведеться містити всіх овець в одному блоці огорожі - там може бути кілька огороджених ділянок, незалежних одна від одної.
- Сегменти паркану орієнтовані в кардинальних напрямках.
- Кожен координатний кортеж являє собою одиночну вівцю.
- Вхідні дані повинні бути цілими парами додатного числа
x>0&y>0, але можуть бути відформатовані відповідним чином для вашої мови.- тобто:
{{1,1},{2,1},{3,7}, .. }або[1,2],[2,1],[3,7], ..
- тобто:
- Порожні місця всередині відгородженої зони добре.
- Ви не можете припустити, що координати вводяться в певному порядку.
Наприклад, для одиночної вівці потрібно 4повністю містити огородження.
Тестові справи
[1,1]
4
[1,1],[1,2],[2,2]
8
[2,1],[3,1],[2,3],[1,1],[1,3],[3,2],[1,2],[3,3]
12
[1,1],[1,2],[2,2],[3,7],[4,9],[4,10],[4,11],[5,10]
22
[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]
36
[1,1],[2,2],[3,3],[4,4],[6,6],[7,7],[8,8],[9,9]
32
[2,1],[8,3],[8,4]
10
Примітки
- Ви можете вважати, що координати вводу є дійсними.
- Ваш алгоритм повинен теоретично працювати для будь-якої досить великої цілої координати (до максимального підтримуваного значення вашої мови).
- Відповіді на повну програму чи функціонування добре.
Це код-гольф , тому найкоротша відповідь у байтах виграє!
x,yвхід повинен бути разом. Хороша думка, хоча я сам про це не думав.
{1,2,3,4},{5,6,7,8} -> {1,5},{2,6},{3,7},{4,8}