배경
울타리를 만들고 싶습니다. 이를 위해 많은 기둥을 모아서 땅에 붙였습니다. 나는 또한 실제 울타리를 만들기 위해 기둥에 못을 박을 보드를 많이 모았습니다. 나는 물건을 만들 때 쫓겨 버리는 경향이 있으며, 더 이상 보드를 놓을 곳이 없을 때까지 보드를 기둥에 고정시킬 것입니다. 내가 끝낼 수있는 울타리를 열거하기를 바랍니다.
입력
입력은 편리한 형식으로 극의 위치를 나타내는 2 차원 정수 좌표 목록입니다. 중복이 포함되어 있지 않다고 가정 할 수 있지만 순서에 대해서는 아무 것도 가정 할 수 없습니다.
보드는 극 사이의 직선으로 표시되며 단순성을 위해 수평 및 수직 보드 만 고려합니다. 보드 사이에 다른 극이나 보드가없는 경우 두 개의 극을 보드로 연결할 수 있습니다. 즉, 보드가 서로 교차 할 수 없습니다. 새 보드를 추가 할 수없는 경우 기둥과 보드의 배열은 최대입니다 (동일하게 수평 또는 수직으로 정렬 된 두 기둥 사이에 기둥 또는 보드가 있음).
산출
출력은 극점을 사용하여 구성 할 수있는 최대 배열 수입니다.
예
입력 목록을 고려하십시오
[(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)]
위에서 본 기둥의 해당 배열은 다음과 같습니다.
o
o o
o o
o o
o
이 극을 사용하여 구성 할 수있는 최대 3 개의 최대 배열이 있습니다.
o o o
o-o o|o o-o
o----o o||| o o| | o
o-o o|o o-o
o o o
따라서 올바른 출력은 3
입니다.
규칙
함수 또는 전체 프로그램을 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점은 허용되지 않습니다.
테스트 사례
[] -> 1
[(0,0),(1,1),(2,2)] -> 1
[(0,0),(1,0),(2,0)] -> 1
[(0,0),(0,1),(1,0),(1,1)] -> 1
[(1,0),(0,1),(-1,0),(0,-1)] -> 2
[(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] -> 3
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(4,-1)] -> 3
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(4,-1),(0,-1)] -> 4
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(0,-1),(2,2)] -> 5
[(0,0),(4,0),(1,1),(1,-2),(3,1),(3,-2),(2,-1),(4,-1),(0,-1),(2,2)] -> 8
(0,-2)
잘 잡아야합니다. 지금 변경 중입니다.