리틀 챈들러는 슬프다. 그를 응원하기 위해 구름을 그립니다.
참고 : 구름을 그리는 것이 실제로 그를 응원하지는 않습니다.
원은 3- 튜플로 정의 될 수 직교 평면상의 원의 X 위치이고, 직교 평면상에서 원의 y 좌표이며, 원의 반경이다. 및 음수 일 수있다. 항상 긍정적입니다. 입력은 공백으로 분리 된 3 개의 튜플 형태의 원 목록입니다. 예를 들어 :(x,y,r)
x
y
r
x
y
r
3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8
3,1,1
수단 "에 중심점 원 3,1
1 반경이. 3,2,1.5
의 중심점 원 수단" 3,2
1.5 반경을.
이 입력의 모든 원을 그래프에 그리면 다음과 같이 보입니다 (명확성을 위해 그리드 선과 레이블을 포함했지만 필수는 아닙니다).
모든 원이 어떻게 응집되어 있는지 주목하십시오 . 즉, 그것들은 모두 겹치므로 작은 원 그룹이 나머지 그룹과 분리되지 않고 하나의 큰 그룹을 형성합니다. 입력은 응집력 이 보장 됩니다.
이제 우리는 다른 선들없이이 원들에 의해 형성된 "테두리"주위를 이동하는 선을 그립니다. 모든 원에 의해 형성된 실루엣의 테두리를 그리는 것과 같습니다. 결과 클라우드는 다음과 같습니다.
따라서이 구름은 경계를 형성하는 입력의 원호 만 그려 단일 모양으로 만들어졌습니다. 즉, 구름은 다른 원 안에 있지 않은 호만 그려서 형성됩니다. 프로그램은 위에서 설명한 형식으로 입력하고 결과 구름을 표시하는 이미지를 출력합니다. 구름의 전체적인 모양은 정확해야하지만 스케일, 색상, 선 두께 및 정점의 모양은 사용자에게 달려 있습니다. "이 프로그램은 흰 바탕에 흰 구름을 그립니다.", "이 프로그램은 무한히 작은 규모로 구름을 그립니다.", "이 프로그램은 0으로 구름을 그립니다. 경계선의 색은 채우기 또는 배경의 색과 달라야합니다.
또 다른 예. 입력:
1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7
산출:
구름에 "구멍"이 있으면 구멍도 그려야합니다. 입력:
0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4
산출:
중요한 규칙은 다음과 같습니다. 프로그램은 경계를 형성하는 선만 그려야 합니다 . 즉, 단순히 원을 완전히 그릴 수 없으며 흰색 채우기로 원을 약간 작게 그릴 수는 없습니다.이 방법은 여전히 경계를 형성하지 않는 선을 그립니다. 이 규칙의 목적은 "원을 그린 다음 흰색 채우기로 원을 다시 그립니다"구현 또는 이와 유사한 것을 방지하는 것이 었습니다. 대답은 실제로 그림을 그리기 전에 그림을 그릴 위치를 계산해야합니다.
이것은 코드 골프이므로 가장 짧은 문자 수가 이깁니다.