Text processing/Max licenses in use: Difference between revisions

From Rosetta Code
Content added Content deleted
(Python)
m (spurious word)
Line 8: Line 8:




Save the 10,000 line log file from [http://docs.google.com/View?docid=dxbvd2v_4fg4pr8dg 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) that at which this occurs.
Save the 10,000 line log file from [http://docs.google.com/View?docid=dxbvd2v_4fg4pr8dg 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.


*Note: The page uses javascript to display a text file, so it may be best to cut-n-paste from a browser to a text file rather than downloading the URL.
*Note: The page uses javascript to display a text file, so it may be best to cut-n-paste from a browser to a text file rather than downloading the URL.

Revision as of 22:16, 3 October 2008

Task
Text processing/Max licenses in use
You are encouraged to solve this task according to the task description, using any language you may know.

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 softwares file faithfully records a checkout event when a copy of the software starts and a checkin event when the software finishes. 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 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.

  • Note: The page uses javascript to display a text file, so it may be best to cut-n-paste from a browser to a text file rather than downloading the URL.

Python

Python 2.6 <python>import urllib

def max_out(logfile):

   maxout =0
   maxouttimes = []
   out = 0
   for line in logfile:
       direction = line[8]
       time = line[14:33]
       if direction == 'O':
           out +=1
           if out > maxout:
               maxout = out
               maxouttimes = [time]
           elif out == maxout:
               maxouttimes.append(time)
       else:
           out -=1
   return maxout, maxouttimes

if __name__ == '__main__':

   log = file('license_example_log.txt')
   maxout, maxouttimes = max_out(log)
   log.close()
   print "Maximum simultaneous license use is %i at the following times:\n %s" % (
       maxout, '\n '.join(maxouttimes))</python>

Example output:

Maximum simultaneous license use is 99 at the following times:
 2008/10/03_08:39:34
 2008/10/03_08:40:40