더북(TheBook)

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차 용 곡선

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.