Загрузка данных


import random

# ------------------------------
# Верхние и нижние пределы
# ------------------------------
limits = {
    "weight": {"min": 0, "max": 250},          # кг
    "speed": {"min": -1.0, "max": 1.0},       # м/с
    "voltage": {"min": 342, "max": 418},      # В
    "matrix_energy": {"min": 1, "max": 15}    # условная энергия
}

# ------------------------------
# Сильные критерии лифта
# ------------------------------
strong_criteria = {
    "overload": False,         # True = перегрузка
    "doors_closed": True,      # True = двери закрыты
    "maintenance_ok": True,    # True = техническое состояние
    "call_button_pressed": True
}

# ------------------------------
# Слабые критерии (не влияют)
# ------------------------------
weak_criteria = {
    "light_on": True,
    "music_playing": False
}

# ------------------------------
# Матрица принятия решений (по сильным критериям)
# True = лифт может ехать
decision_matrix = {
    (False, True, True, True): True,
    (True, True, True, True): False,
    (False, False, True, True): False,
    (False, True, False, True): False,
}

# ------------------------------
# Функция подъема лифта
# ------------------------------
def lift_move(weight, speed, voltage, doors_closed, matrix_energy, strong, weak, is_minus_day=False):
    # Проверка пределов
    weight_ok = limits["weight"]["min"] <= weight <= limits["weight"]["max"]
    speed_ok = limits["speed"]["min"] <= speed <= limits["speed"]["max"]
    voltage_ok = limits["voltage"]["min"] <= voltage <= limits["voltage"]["max"]
    doors_ok = doors_closed
    matrix_ok = (limits["matrix_energy"]["min"] <= matrix_energy <= limits["matrix_energy"]["max"]) and not is_minus_day
    
    # Проверка матрицы по сильным критериям
    key = tuple(strong[c] for c in ["overload", "doors_closed", "maintenance_ok", "call_button_pressed"])
    if key in decision_matrix:
        can_move = decision_matrix[key]
        if can_move:
            move_status = "Лифт успешно поехал!"
        else:
            move_status = "Проблема! Лифт не может ехать по матрице."
    else:
        move_status = "Комбинация сильных критериев не найдена в матрице!"
    
    # Вывод состояния каждого параметра
    print(f"Вес: {'ok' if weight_ok else 'error'}")
    print(f"Скорость: {'ok' if speed_ok else 'error'}")
    print(f"Напряжение: {'ok' if voltage_ok else 'error'}")
    print(f"Двери закрыты: {'yes' if doors_ok else 'error'}")
    print(f"Энергия матрицы: {'energy plus' if matrix_ok else 'energy minus'}")
    print(f"Слабые критерии: {weak}")
    print(move_status)
    print("-" * 40)
    
    return weight_ok and speed_ok and voltage_ok and doors_ok and matrix_ok and can_move

# ------------------------------
# Пример случайного тестирования
# ------------------------------
for i in range(5):
    # Случайные параметры
    weight = random.randint(200, 300)
    speed = random.uniform(-2.0, 2.0)
    voltage = random.randint(340, 420)
    doors_closed = random.choice([True, False])
    matrix_energy = random.randint(0, 20)
    
    lift_move(weight, speed, voltage, doors_closed, matrix_energy, strong_criteria, weak_criteria)