Problem:
２都市間の距離

地球上の2 都市の北緯と東経を入力とし、地表距離を計算して出力するプログラムを作成してください。ただし、地球は半径 6,378.1 km の球とし、2 点間の地表距離とはこの球面に沿った最短距離です。また、南半球でも南緯は用いずに北緯 0 ~ -90 度を用い、グリニッジ子午線の西でも西経は用いずに東経 180 ~ 360 度を用いることとします。地表距離は km 単位で求め、小数点以下は四捨五入し、整数値として出力してください。

以下に主要都市の北緯、東経の例を示します。

地名

北緯(度)

東経(度)

東京

35.68

139.77

シンガポール

1.37

103.92

シドニー

-33.95

151.18

シカゴ

41.78

272.25

ブエノスアイレス

-34.58

301.52

ロンドン

51.15

359.82

Input

複数のデータセットの並びが入力として与えられます。入力の終わりは-1 四つの行で示されます。各データセットは以下の形式で与えられます。

a b c d

1 行に第 1 の都市の北緯 a、第 1 の都市の東経 b、第 2 の都市の北緯 c、第 2 の都市の東経 d が空白区切りで与えられます。入力はすべて実数で与えられます。

データセットの数は 30 を超えません。

Output

データセット毎に 2 都市の地表距離を１行に出力します。

Sample Input

35.68 139.77 51.15 359.82
1.37 103.92 41.78 272.25
51.15 359.82 -34.58 301.52
-1 -1 -1 -1

Output for the Sample Input

9609
15092
11112

Solution in Ruby (judge verdict: Wrong Answer)

include Math
R=6378.1
(x,y,z=$_.split.map{|i|i.to_f*PI/180}.each_slice(2).map{|h,l|[cos(l)*r=cos(h)*R,sin(h)*R,sin(l)*r]}.inject(&:zip).map{|i,j|i-j}
p (R*acos(1-(hypot(hypot(x,y),z)/R)**2/2)).round)while gets>?.