Пример #1
0
def arrive_on_close_judge(output_list=[]):
    for i in range(1, len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "ARRIVE"):
            j = i - 1
            state_j = get_state(j, output_list)
            if (state_j != "ARRIVE" and state_j != "CLOSE"):
                return True
    return False
Пример #2
0
def open_and_close_judge(door_list=[]):
    if (get_state(0, door_list) != "OPEN"):
        return True
    for i in range(len(door_list) - 1):
        j = i + 1
        state_i = get_state(i, door_list)
        state_j = get_state(j, door_list)
        if (state_i == state_j):
            return True
    return False
def in_and_out_on_open_judge(output_list=[]):
    for i in range(len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "IN" or state_i == "OUT"):
            if (i == 0):
                return True
            j = i - 1
            state_j = get_state(j, output_list)
            if (state_j != "OPEN" and state_j != "IN" and state_j != "OUT"):
                return True
    return False
def get_door_list(output_list=[]):
    door_list = []
    for i in range(len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "OPEN" or state_i == "CLOSE"):
            door_list.append(output_list[i])
    return door_list
def get_arrive_list(output_list=[]):
    arrive_list = []
    for i in range(len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "ARRIVE"):
            arrive_list.append(output_list[i])
    return arrive_list
def meet_floor_judge(output_list=[]):
    for i in range(len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "OPEN"):
            std_floor = get_door_floor(i, output_list)
            for j in range(i + 1, len(output_list)):
                state_j = get_state(j, output_list)
                if (state_j == "CLOSE"):
                    break
            for output in output_list[i + 1:j]:
                pos = output.index(']')
                send = output[pos + 1:]
                state, send_id, floor = get_send_info(send)
                if (floor != std_floor):
                    return True
    return False
Пример #7
0
def open_on_arrive_judge(output_list=[]):
    for i in range(len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "OPEN"):
            floor_i = get_door_floor(i, output_list)
            if (i == 0):
                if (floor_i != 1):
                    return True  # door can only be open at FIRST floor when not moving at all
            else:
                j = i - 1
                state_j = get_state(j, output_list)
                if (state_j != "ARRIVE" and state_j != "CLOSE"):
                    return True
                if (floor_i != 1):
                    floor_j = get_door_floor(j, output_list)
                    if (floor_i != floor_j):
                        return True
    return False
def transfer_judge(id_send_dic=[]):
    for id, sub_send_list in id_send_dic.items():
        if (len(sub_send_list) % 2 != 0):
            return True
        if (get_state(0, sub_send_list) != "IN"):
            return True
        for i in range(1, len(sub_send_list) - 1):
            if (i % 2 == 0):
                continue
            out_one = sub_send_list[i]
            in_two = sub_send_list[i + 1]
            state_one = get_state(i, sub_send_list)
            state_two = get_state(i + 1, sub_send_list)
            if (state_one != "OUT" or state_two != "IN"):
                return True
            floor_one = get_send_floor(i, sub_send_list)
            floor_two = get_send_floor(i + 1, sub_send_list)
            if (floor_one != floor_two):
                return True
    return False
def capacity_check(send_list=[], elev_type=''):
    if (elev_type == 'A'):
        in_str = "1111111"
    elif (elev_type == 'B'):
        in_str = "111111111"
    elif (elev_type == 'C'):
        in_str = "11111111"

    state_str = ""
    for send in send_list:
        state = get_state(0, [send])
        if (state == "IN"):
            state_str += "1"
        else:
            state_str += "0"

    if (in_str in state_str):
        return True
    return False
def get_send_list(output_list=[]):
    send_list = []
    id_send_dic = {}
    for i in range(len(output_list)):
        state_i = get_state(i, output_list)
        if (state_i == "IN" or state_i == "OUT"):
            pos = int((output_list[i]).index(']') + 1)
            send_list.append(output_list[i][pos:])
            sep_pos_first = output_list[i].index('-')
            if ("--" in output_list[i]):
                sep_pos_last = output_list[i].rindex('-') - 1
            else:
                sep_pos_last = output_list[i].rindex('-')
            id = int(output_list[i][sep_pos_first + 1:sep_pos_last])
            if (id in id_send_dic):
                id_send_dic[id].append(output_list[i][pos:])
            else:
                id_send_dic[id] = [output_list[i][pos:]]
    return send_list, id_send_dic