Averages/Mean time of day: Difference between revisions
Content added Content deleted
Walterpachl (talk | contribs) m (→{{header|REXX}}: typo p->pi) |
(Add Nimrod) |
||
Line 494: | Line 494: | ||
ans = 23:47:43 |
ans = 23:47:43 |
||
</pre> |
</pre> |
||
=={{header|Nimrod}}== |
|||
<lang nimrod>import math, complex, strutils |
|||
proc rect(r, phi): TComplex = (r * cos(phi), sin(phi)) |
|||
proc phase(c): float = arctan2(c.im, c.re) |
|||
proc radians(x): float = (x * pi) / 180.0 |
|||
proc degrees(x): float = (x * 180.0) / pi |
|||
proc meanAngle(deg): float = |
|||
var c: TComplex |
|||
for d in deg: |
|||
c += rect(1.0, radians(d)) |
|||
degrees(phase(c / float(deg.len))) |
|||
proc meanTime(times): string = |
|||
const day = 24 * 60 * 60 |
|||
let |
|||
angles = times.map(proc(time: string): float = |
|||
let t = time.split(":") |
|||
(t[2].parseInt + t[1].parseInt * 60 + t[0].parseInt * 3600) * 360 / day) |
|||
ms = (angles.meanAngle * day / 360 + day) mod day |
|||
(h,m,s) = (ms.int div 3600, (ms.int mod 3600) div 60, ms.int mod 60) |
|||
align($h, 2, '0') &":"& align($m, 2, '0') &":"& align($s, 2, '0') |
|||
echo meanTime(["23:00:17", "23:40:20", "00:12:45", "00:17:19"])</lang> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |