Averages/Mean time of day: Difference between revisions

Content added Content deleted
(Added Java)
(Add Lua version)
Line 1,059: Line 1,059:
00:17:19
00:17:19
is 23:47:43
is 23:47:43
</pre>


=={{header|Lua}}==
<lang lua>
local times = {"23:00:17","23:40:20","00:12:45","00:17:19"}

-- returns time converted to a radian format
local function timeToAngle(str)
local h,m,s = str:match("(..):(..):(..)")
return (h + m / 60 + s / 3600)/12 * math.pi
end

-- computes the mean of the angles inside a list
local function meanAngle(angles)
local sumSin,sumCos = 0,0
for k,v in pairs(angles) do
sumSin = sumSin + math.sin(v)
sumCos = sumCos + math.cos(v)
end
return math.atan2(sumSin,sumCos)
end

-- converts and angle back to a time string
local function angleToTime(angle)
local abs = angle % (math.pi * 2)
local time = abs / math.pi * 12
local h = math.floor(time)
local m = math.floor(time * 60) % 60
local s = math.floor(time * 3600) % 60
return string.format("%02d:%02d:%02d", h, m, s)
end

-- convert times to angles
for k,v in pairs(times) do
times[k] = timeToAngle(v)
end

print(angleToTime(meanAngle(times)))
</lang>

{{out}}
<pre>
23:47:43
</pre>
</pre>