How to resolve the algorithm Text processing/Max licenses in use step by step in the Euphoria programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Text processing/Max licenses in use step by step in the Euphoria programming language

Table of Contents

Problem Statement

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:

Save the 10,000 line log file from   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. Mirror of log file available as a zip here (offsite mirror).

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Text processing/Max licenses in use step by step in the Euphoria programming language

Source code in the euphoria programming language

function split(sequence s, integer c)
    sequence out
    integer first, delim
    out = {}
    first = 1
    while first <= length(s) do
        delim = find_from(c, s, first)
        if delim = 0 then
            delim = length(s) + 1
        end if
        out = append(out, s[first..delim-1])
        first = delim + 1
    end while
    return out
end function

include get.e
function val(sequence s)
    sequence v
    v = value(s)
    return v[2] - v[1] * v[1]
end function

constant fn = open("mlijobs.txt", "r")
integer maxout
sequence jobs, line, maxtime
object x
jobs = {}
maxout = 0
while 1 do
    x = gets(fn)
    if atom(x) then
        exit
    end if
    line = split(x, ' ')
    line[$] = val(line[$])
    if equal(line[2], "OUT") then
        jobs &= line[$]
        if length(jobs) > maxout then
            maxout = length(jobs)
            maxtime = {line[4]}
        elsif length(jobs) = maxout then
            maxtime = append(maxtime, line[4])
        end if
    else
        jobs[find(line[$],jobs)] = jobs[$]
        jobs = jobs[1..$-1]
    end if
end while
close(fn)

printf(1, "Maximum simultaneous license use is %d at the following times:\n", maxout)
for i = 1 to length(maxtime) do
    printf(1, "%s\n", {maxtime[i]})
end for

  

You may also check:How to resolve the algorithm Wordle comparison step by step in the C++ programming language
You may also check:How to resolve the algorithm Roman numerals/Encode step by step in the CLU programming language
You may also check:How to resolve the algorithm GUI/Maximum window dimensions step by step in the Icon and Unicon programming language
You may also check:How to resolve the algorithm Statistics/Basic step by step in the Sidef programming language
You may also check:How to resolve the algorithm Text processing/1 step by step in the D programming language