1.2.30 대원(great circle, 구를 둘로 나눴을 때 생길 수 있는 가장 큰 원). 지구 위의 2개의 점의 위도와 경도를 도 단위로 표현한 네 개의 실수 x1
, y1
, x2
, y2
를 명령 줄 인수로 받아 두 점 간의 대원 거리를 출력하는 프로그램을 작성하라. 대원 거리 d(해리 단위)는 다음의 공식으로 구한다.
d = 60 arccos(sin(x1) sin(x2) + cos(x1) cos(x2) cos(y1 - y2))
이 방정식은 도 단위를 사용한다는 점에 주의하라. 파이썬의 삼각함수는 인수를 라디안 단위로 받는다. 도와 라디안 간에 변환하려면 math.radians()
와 math.degrees()
함수를 사용하라. 작성한 프로그램을 이용해 파리(48.87°N, 2.33°W)와 샌프란시스코(37.8°N, 122.4°W) 간의 거리를 구하라.
1.2.31 세 숫자 정렬. 명령 줄 인수로 세 개의 정수를 입력받아 오름차순으로 출력하는 프로그램을 작성하라. 내장 함수 min()
과 max()
를 사용하라.
1.2.32 용 곡선(dragon curve). 0에서 5차까지의 용 곡선을 그리는 명령을 출력하는 프로그램을 작성하라. 곡선 그리는 명령은 일련의 F
, L
, R
문자로 구성된다. F
는 “1 단위 앞으로 나가며 선 그리기”, L
은 “좌회전”, R
은 “우회전”을 의미한다. n차 용 곡선은 긴 종이를 n번 반으로 접고 나서 접힌 부분을 직각으로 펼친 모습이다. 이 문제를 풀 때는 n차 곡선은 n-1차 곡선을 따라간 후 L
, 그러고 나서 거꾸로 n-1차 곡선을 따라가는 모습이라는 점을 염두에 두어라. 거꾸로 곡선을 따라가는 명령도 이와 비슷한 방법으로 해결할 수 있다.
▲ 그림 1.2.10 0, 1, 2, 3차 용 곡선