Averages/Mean time of day: Difference between revisions
Content added Content deleted
(task description: Improve formatting and add related tasks box) |
No edit summary |
||
Line 1,225: | Line 1,225: | ||
{{out}} |
{{out}} |
||
<pre>23:47:43</pre> |
<pre>23:47:43</pre> |
||
=={{header|PowerShell}}== |
|||
<lang PowerShell> |
|||
function Get-MeanTimeOfDay |
|||
{ |
|||
[CmdletBinding()] |
|||
[OutputType([timespan])] |
|||
Param |
|||
( |
|||
[Parameter(Mandatory=$true, |
|||
ValueFromPipeline=$true, |
|||
ValueFromPipelineByPropertyName=$true)] |
|||
[ValidatePattern("(?:2[0-3]|[01]?[0-9])[:.][0-5]?[0-9][:.][0-5]?[0-9]")] |
|||
[string[]] |
|||
$Time |
|||
) |
|||
Begin |
|||
{ |
|||
[double[]]$angles = @() |
|||
function ConvertFrom-Time ([timespan]$Time) |
|||
{ |
|||
(360 * $Time.Hours / 24.0) + (360 * $Time.Minutes / (24 * 60.0)) + (360 * $Time.Seconds / (24 * 3600.0)) |
|||
} |
|||
function ConvertTo-Time ([double]$Angle) |
|||
{ |
|||
$t = New-TimeSpan -Hours ([int](24 * 60 * 60 * $Angle / 360) / 3600) ` |
|||
-Minutes (([int](24 * 60 * 60 * $Angle / 360) % 3600 - [int](24 * 60 * 60 * $Angle / 360) % 60) / 60) ` |
|||
-Seconds ([int]((24 * 60 * 60 * $Angle / 360) % 60)) |
|||
if ($t.Days -gt 0) |
|||
{ |
|||
return ($t - (New-TimeSpan -Hours 1)) |
|||
} |
|||
$t |
|||
} |
|||
function Get-MeanAngle ([double[]]$Angles) |
|||
{ |
|||
[double]$x,$y = 0 |
|||
for ($i = 0; $i -lt $Angles.Count; $i++) |
|||
{ |
|||
$x += [Math]::Cos($Angles[$i] * [Math]::PI / 180) |
|||
$y += [Math]::Sin($Angles[$i] * [Math]::PI / 180) |
|||
} |
|||
([Math]::Atan2(($y / $Angles.Count), ($x / $Angles.Count)) * 180 / [Math]::PI) + 360 |
|||
} |
|||
} |
|||
Process |
|||
{ |
|||
$angles += ConvertFrom-Time $_ |
|||
} |
|||
End |
|||
{ |
|||
ConvertTo-Time (Get-MeanAngle $angles) |
|||
} |
|||
} |
|||
</lang> |
|||
<lang PowerShell> |
|||
"Mean time is {0}" -f ("23:00:17","23:40:20","00:12:45","00:17:19" | Get-MeanTimeOfDay) |
|||
</lang> |
|||
{{Out}} |
|||
<pre> |
|||
Mean time is 23:47:43 |
|||
</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |