import sort_date
|
|
|
|
correct_locs = [ ]
|
|
temp = None
|
|
moved_item = None
|
|
moved_item_loc = None
|
|
exp_date = [ ]
|
|
shelf_new = [ ]
|
|
repeats = 0
|
|
moves_return = None
|
|
pickup = []
|
|
replace = []
|
|
|
|
def throw_check():
|
|
for i in range(0,len(moves_return),2):
|
|
loc = i + 2;
|
|
if moves_return[i + 1] != 0:
|
|
break
|
|
|
|
if 0 in moves_return[loc:]:
|
|
return True
|
|
return False
|
|
def seperate():
|
|
global pickup
|
|
global replace
|
|
for i in range(1,len(moves_return),2):
|
|
pickup.append(moves_return[i-1])
|
|
replace.append(moves_return[i])
|
|
|
|
|
|
|
|
|
|
def backArray( myArray ):
|
|
global shelf_back
|
|
shelf_back = [ ]
|
|
for i in range( len( myArray ) ):
|
|
shelf_back.append( myArray[ i ] )
|
|
|
|
|
|
def eqArray( myArray ):
|
|
global exp_date
|
|
exp_date = [ ]
|
|
for i in range( len( myArray ) ):
|
|
exp_date.append( myArray[ i ] )
|
|
|
|
|
|
def place():
|
|
global exp_date
|
|
global shelf_new
|
|
global repeats
|
|
global shelf_back
|
|
global moves_return
|
|
repeats += 1
|
|
backArray( exp_date )
|
|
moved_item = None
|
|
moved_item_loc = None
|
|
|
|
if (exp_date[ len( exp_date ) - 1 ] != None):
|
|
empty_loc = exp_date.index( None )
|
|
moved_item_loc = exp_date.index( shelf_new[ empty_loc ] )
|
|
reps = 0
|
|
while True:
|
|
reps += 1
|
|
if (moved_item_loc in correct_locs):
|
|
exp_date.pop( moved_item_loc )
|
|
moved_item_loc = exp_date.index( shelf_new[ empty_loc ] ) + reps
|
|
continue
|
|
break
|
|
eqArray( shelf_back )
|
|
moved_item = exp_date[ moved_item_loc ]
|
|
if (exp_date[ moved_item_loc ] != shelf_new[ moved_item_loc ]):
|
|
exp_date[ moved_item_loc ] = None
|
|
exp_date[ empty_loc ] = moved_item
|
|
correct_locs.append( empty_loc )
|
|
|
|
print " Moved item {0} to location {1}. Location {2} is now empty!".format( moved_item,
|
|
empty_loc + 1,
|
|
moved_item_loc + 1 )
|
|
print "============================================================================="
|
|
moves_return.append( str( moved_item_loc + 1 ) )
|
|
moves_return.append( str( empty_loc + 1 ) )
|
|
else:
|
|
print " Leaving item {0} in location {1}. Location {2} is still empty!".format( moved_item,
|
|
moved_item_loc + 1,
|
|
empty_loc + 1 )
|
|
print "============================================================================"
|
|
correct_locs.append( moved_item_loc )
|
|
|
|
place()
|
|
else:
|
|
return
|
|
|
|
|
|
def faster():
|
|
global moves_return
|
|
for i in range( 1, len( moves_return ) - 1, 2 ):
|
|
if (moves_return[ i ] == moves_return[ i + 1 ]):
|
|
moves_return.pop( i )
|
|
moves_return.pop( i )
|
|
faster()
|
|
else:
|
|
continue
|
|
|
|
return moves_return
|
|
|
|
|
|
def generate( dates, date_cur ):
|
|
global exp_date
|
|
global shelf_new
|
|
global repeats
|
|
global moves_return
|
|
shelf_new = [ ]
|
|
moves_return = [ ]
|
|
exp_date = sort_date.calcDate( dates, date_cur )
|
|
shelf_back = exp_date[ : ]
|
|
try:
|
|
expired = exp_date.count( -1 )
|
|
for i in range( expired ):
|
|
shelf_back.pop( shelf_back.index( -1 ) )
|
|
|
|
shelf_new = sorted( shelf_back )
|
|
for i in range( expired ):
|
|
shelf_new.append( -1 )
|
|
except ValueError:
|
|
print('')
|
|
exp_date.append( None )
|
|
shelf_new.append( None )
|
|
repeats = 0
|
|
|
|
print "\n\n\n//////////////////////////////////////////////////////////////////////////////"
|
|
print(" {} ".format( exp_date ))
|
|
print(" {} ".format( shelf_new ))
|
|
print "/////////////////////////////////////////////////////////////////////////////\n\n\n"
|
|
|
|
while True:
|
|
if (repeats < len( exp_date )):
|
|
for i in range( len( exp_date ) ):
|
|
if (exp_date[ len( exp_date ) - 1 ] == None):
|
|
if (exp_date[ i ] == shelf_new[ i ]):
|
|
continue
|
|
else:
|
|
exp_date[ len( exp_date ) - 1 ] = exp_date[ i ]
|
|
print '\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
|
|
print ' TEMP IS EMPTY, MOVING {0} FROM LOCATION {1} TO THE TEMP'.format( exp_date[ i ],
|
|
i + 1 )
|
|
print '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n'
|
|
print "============================================================================"
|
|
exp_date[ i ] = None
|
|
moves_return.append( str( i + 1 ) )
|
|
moves_return.append( str( len( exp_date ) ) )
|
|
else:
|
|
break
|
|
place()
|
|
|
|
try:
|
|
print('***********************************************************************************')
|
|
print(' The last {} items have expired, throwing them away.'.format(
|
|
len( exp_date ) - shelf_new.index( -1 ) - 1 ))
|
|
print('***********************************************************************************')
|
|
if (len( shelf_new ) != 3):
|
|
for i in range( len( shelf_new ) - 1, len( shelf_new ) - shelf_new.index( -1 ), -1 ):
|
|
print "aaa"
|
|
moves_return.append( str( i ) )
|
|
moves_return.append( "0" )
|
|
else:
|
|
for i in range( len( shelf_new ), len( shelf_new ) - shelf_new.index( -1 ), -1 ):
|
|
print "aaa"
|
|
moves_return.append( str( i - 1 ) )
|
|
moves_return.append( "0" )
|
|
|
|
except ValueError:
|
|
print(" No items have expired")
|
|
print('***********************************************************************************')
|
|
faster()
|
|
|
|
return moves_return
|
|
|
|
print generate( [ "11.07.2019", "12.09.2019" ], "10.08.2019" )
|
|
|
|
seperate()
|
|
print(pickup)
|
|
print replace
|
|
|