Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.79 KB | None | 0 0
  1. with open('input.txt') as fIn:
  2.     firstLine = fIn.readline().split()
  3.     for i in range(1,int(firstLine[0])+1):
  4.         diskBlocks[str(i)]=[0,int(firstLine[1])]
  5.     for line in fIn:
  6.         lineList=line.rstrip().split()
  7.         while(len(stack) and int(stack[0][0])<int(lineList[REQUESTTIME])):
  8.             fOut.write(' '.join(stack.pop(0)))
  9.    
  10.         if lineList[TASK]=='R':
  11.             if lineList[ID] not in idToBlockDict:
  12.                 disk=str(random.choice(range(1,len(diskBlocks))))
  13.                
  14.                 idToBlockDict[lineList[ID]]=[disk,
  15.                                             diskBlocks[disk][CURRENTBLOCK],
  16.                                             lineList[NOOFBLOCKS]] #ADD THE LOCATION OF FILE
  17.                
  18.                 diskBlocks[disk][CURRENTBLOCK]+=int(lineList[NOOFBLOCKS]) #INCREMENT THE DISK BLOCK
  19.    
  20.             if idToBlockDict[lineList[ID]][DISK]!=lineList[DISK]: #MOVING THE FILE BETWEEN DISKS
  21.  
  22.                 fOut.write(lineList[REQUESTTIME]+' '
  23.                            +str(idToBlockDict[lineList[ID]][DISK])+' '
  24.                            +str(idToBlockDict[lineList[ID]][BLOCK])+' '
  25.                            +str(idToBlockDict[lineList[ID]][NOOFBLOCKS])+' '
  26.                            +READ+'\n')  #READ FROM THE DISK
  27.            
  28.                 diskBlocks[idToBlockDict[lineList[ID]][DISK]][MAXCAPACITY]+=int(idToBlockDict[lineList[ID]][NOOFBLOCKS]) #INCREASE MAX CAPACITY
  29.  
  30.                 if((diskBlocks[lineList[DISK]][CURRENTBLOCK]+int(lineList[NOOFBLOCKS]))<HARDMAXCAPACITY):
  31.                    
  32.                     stack.append([str(int(lineList[REQUESTTIME])+100),
  33.                                lineList[DISK],
  34.                                str(diskBlocks[lineList[DISK]][CURRENTBLOCK]),
  35.                                lineList[NOOFBLOCKS],
  36.                                WRITE,
  37.                                 '\n'])  #Add to stack
  38.  
  39.  
  40.                 idToBlockDict[lineList[ID]]=[lineList[DISK],
  41.                                              diskBlocks[lineList[DISK]][CURRENTBLOCK],
  42.                                              lineList[NOOFBLOCKS]] #UPDATE THE LOCATION OF FILE
  43.  
  44.                 diskBlocks[lineList[DISK]][CURRENTBLOCK]+=int(lineList[NOOFBLOCKS]) #INCREMENT WRITING BLOCK
  45.  
  46.  
  47.             else:     #JUST READ
  48.                 fOut.write(lineList[REQUESTTIME]+' '
  49.                            +str(idToBlockDict[lineList[ID]][DISK])+' '
  50.                            +str(idToBlockDict[lineList[ID]][BLOCK])+' '
  51.                            +str(idToBlockDict[lineList[ID]][NOOFBLOCKS])+' '
  52.                            +READ+'\n')  #READ FROM THE DISK
  53.                    
  54.    
  55.         elif lineList[TASK]=='W':
  56.             if((diskBlocks[lineList[DISK]][CURRENTBLOCK]+int(lineList[NOOFBLOCKS]))<HARDMAXCAPACITY):          
  57.                 fOut.write(lineList[REQUESTTIME]+' '
  58.                                    +lineList[DISK]+' '
  59.                                    +str(diskBlocks[lineList[DISK]][CURRENTBLOCK])+' '
  60.                                    +lineList[NOOFBLOCKS]+' '
  61.                                    +WRITE+'\n')  #WRITE TO THE DISK
  62.            
  63.             if lineList[ID] in idToBlockDict:
  64.                 diskBlocks[idToBlockDict[lineList[ID]][DISK]][MAXCAPACITY]+=int(lineList[NOOFBLOCKS])  #INCREASE MAX CAPACITY
  65.            
  66.             idToBlockDict[lineList[ID]]=[lineList[DISK],
  67.                                          diskBlocks[lineList[DISK]][CURRENTBLOCK],
  68.                                          lineList[NOOFBLOCKS]] #UPDATE THE ID
  69.            
  70.             diskBlocks[lineList[DISK]][CURRENTBLOCK]+=int(lineList[NOOFBLOCKS]) #UPDATE THE WRITING BLOCK
  71.        
  72.                
  73.     while(len(stack)):
  74.             fOut.write(' '.join(stack.pop(0)))          
  75.            
  76. fOut.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement