import sort_date
|
|
|
|
correct_locs = []
|
|
temp = None
|
|
moved_item = None
|
|
moved_item_loc = None
|
|
exp_date = []
|
|
shelf_new = []
|
|
repeats = 0
|
|
moves_return = None
|
|
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 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('***********************************************************************************')
|
|
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")
|
|
|
|
except ValueError:
|
|
print(" No items have expired")
|
|
print('***********************************************************************************')
|
|
|
|
return moves_return
|