Вы фермер, и ваше стадо овец сбежало! о нет!
Вокруг этих овец, строя заборы, чтобы содержать их. Как фермер с ограниченным бюджетом, вы хотите использовать как можно меньше забора. К счастью для вас, они не самые умные овцы в мире и не бегают после побега.
задача
Учитывая список координат, выведите наименьшее количество сегментов забора, необходимое для содержания овец.
правила
- Овцы содержатся, если они не могут бродить (нет дыр в заборе).
- Вам не нужно содержать всех овец в одном блоке забора - может быть несколько огороженных участков, независимых друг от друга.
- Сегменты ограждения ориентированы в кардинальных направлениях.
- Каждый координатный кортеж представляет одну овцу.
- Входные данные должны быть положительными целочисленными парами
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}