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