Averages/Mean time of day: Difference between revisions

Content added Content deleted
(Added 11l)
Line 22: Line 22:
{{trans|Python}}
{{trans|Python}}
<lang 11l>F mean_angle(angles)
<lang 11l>F mean_angle(angles)
A x = sum(angles.map(a -> cos(radians(a)))) / angles.len
V x = sum(angles.map(a -> cos(radians(a)))) / angles.len
A y = sum(angles.map(a -> sin(radians(a)))) / angles.len
V y = sum(angles.map(a -> sin(radians(a)))) / angles.len
R degrees(atan2(y, x))
R degrees(atan2(y, x))


F mean_time(times)
F mean_time(times)
A t = (times.map(time -> time.split(‘:’)))
V t = (times.map(time -> time.split(‘:’)))
A seconds = (t.map(hms -> (Float(hms[2]) + Int(hms[1]) * 60 + Int(hms[0]) * 3600)))
V seconds = (t.map(hms -> (Float(hms[2]) + Int(hms[1]) * 60 + Int(hms[0]) * 3600)))
A day = 24 * 60 * 60
V day = 24 * 60 * 60
A to_angles = seconds.map(s -> s * 360.0 / @day)
V to_angles = seconds.map(s -> s * 360.0 / @day)
A mean_as_angle = mean_angle(to_angles)
V mean_as_angle = mean_angle(to_angles)
A mean_seconds = round(mean_as_angle * day / 360.0)
V mean_seconds = round(mean_as_angle * day / 360.0)
I mean_seconds < 0
I mean_seconds < 0
mean_seconds += day
mean_seconds += day
A h = mean_seconds I/ 3600
V h = mean_seconds I/ 3600
A m = mean_seconds % 3600
V m = mean_seconds % 3600
A s = m % 60
V s = m % 60
m = m I/ 60
m = m I/ 60
R String(h).zfill(2)‘:’String(m).zfill(2)‘:’String(s).zfill(2)
R String(h).zfill(2)‘:’String(m).zfill(2)‘:’String(s).zfill(2)