2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,9 +1,13 @@
|
|||
A company currently pays a fixed sum for the use of a particular licensed software package. In determining if it has a good deal it decides to calculate its maximum use of the software from its license management log file.
|
||||
A company currently pays a fixed sum for the use of a particular licensed software package. In determining if it has a good deal it decides to calculate its maximum use of the software from its license management log file.
|
||||
|
||||
Assume the software's licensing daemon faithfully records a checkout event when a copy of the software starts and a checkin event when the software finishes to its log file. An example of checkout and checkin events are:
|
||||
Assume the software's licensing daemon faithfully records a checkout event when a copy of the software starts and a checkin event when the software finishes to its log file.
|
||||
|
||||
An example of checkout and checkin events are:
|
||||
License OUT @ 2008/10/03_23:51:05 for job 4974
|
||||
...
|
||||
License IN @ 2008/10/04_00:18:22 for job 4974
|
||||
|
||||
|
||||
Save the 10,000 line log file from [http://rosettacode.org/resources/mlijobs.txt here] into a local file then write a program to scan the file extracting both the maximum licenses that were out at any time, and the time(s) at which this occurs.
|
||||
;Task:
|
||||
Save the 10,000 line log file from [http://rosettacode.org/resources/mlijobs.txt <big> here</big>] into a local file, then write a program to scan the file extracting both the maximum licenses that were out at any time, and the time(s) at which this occurs.
|
||||
<br><br>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
[int]$count = 0
|
||||
[int]$maxCount = 0
|
||||
[datetime[]]$times = @()
|
||||
|
||||
$jobs = Get-Content -Path ".\mlijobs.txt" | ForEach-Object {
|
||||
[string[]]$fields = $_.Split(" ",[StringSplitOptions]::RemoveEmptyEntries)
|
||||
[datetime]$datetime = Get-Date $fields[3].Replace("_"," ")
|
||||
[PSCustomObject]@{
|
||||
State = $fields[1]
|
||||
Date = $datetime
|
||||
Job = $fields[6]
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($job in $jobs)
|
||||
{
|
||||
switch ($job.State)
|
||||
{
|
||||
"IN"
|
||||
{
|
||||
$count--
|
||||
}
|
||||
"OUT"
|
||||
{
|
||||
$count++
|
||||
|
||||
if ($count -gt $maxCount)
|
||||
{
|
||||
$maxCount = $count
|
||||
$times = @()
|
||||
$times+= $job.Date
|
||||
}
|
||||
elseif ($count -eq $maxCount)
|
||||
{
|
||||
$times+= $job.Date
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[PSCustomObject]@{
|
||||
LicensesOut = $maxCount
|
||||
StartTime = $times[0]
|
||||
EndTime = $times[1]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue