1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
' Challenge 120
'
' TASK #2 - Clock Angle
' Submitted by: Mohammad S Anwar
' You are given time $T in the format hh:mm.
'
' Write a script to find the smaller angle formed by the hands of an analog
' clock at a given time.
'
' HINT: A analog clock is divided up into 12 sectors. One sector represents 30
' degree (360/12 = 30).
'
' Example
' Input: $T = '03:10'
' Output: 35 degree
'
' The distance between the 2 and the 3 on the clock is 30 degree.
' For the 10 minutes i.e. 1/6 of an hour that have passed.
' The hour hand has also moved 1/6 of the distance between the 3 and the 4,
' which adds 5 degree (1/6 of 30).
' The total measure of the angle is 35 degree.
'
' Input: $T = '04:00'
' Output: 120 degree
sub parseTime(hhmm as String, byref hh as Integer, byref mm as Integer)
dim p as Integer
p = InStr(hhmm, ":")
hh = val(left(hhmm, p-1))
mm = val(mid(hhmm, p+1))
end sub
sub clockAngles(hh as Integer, mm as Integer, _
byref hh_angle as Integer, byref mm_angle as Integer)
mm_angle = mm*360\60
hh_angle = (hh mod 12)*360\12 + mm_angle*(360\12)\360
end sub
function clockAngle(hh as Integer, mm as Integer) as Integer
dim hh_angle as Integer, mm_angle as Integer, angle as Integer
clockAngles hh, mm, hh_angle, mm_angle
angle = abs(hh_angle - mm_angle)
if angle > 180 then angle = 360 - angle
clockAngle = angle
end function
dim hh as Integer, mm as Integer, angle as Integer
parseTime Command(1), hh, mm
angle = clockAngle(hh, mm)
print angle
|