Python
class State:
    # Возможные состояния турникета
    LOCKED = "ЗАКРЫТО"
    UNLOCKED = "ОТКРЫТО"

class Action:
    # Возможные действия
    COIN = "ЖЕТОН"
    PUSH = "НАЖАТЬ"

class Turnstile:
    def __init__(self):
        # Начальное состояние - заблокировано
        self.state = State.LOCKED
        
        # Таблица переходов состояний
        # Формат: (текущее_состояние, действие): новое_состояние
        self.transitions = {
            (State.LOCKED, Action.COIN): State.UNLOCKED,
            (State.LOCKED, Action.PUSH): State.LOCKED,
            (State.UNLOCKED, Action.COIN): State.UNLOCKED,
            (State.UNLOCKED, Action.PUSH): State.LOCKED
        }
    
    def process(self, action):
        # Получаем новое состояние из таблицы переходов
        new_state = self.transitions.get((self.state, action))
        if new_state:
            # Выводим результат действия
            print(f"{self.state} → {new_state} | действие: {action}")
            self.state = new_state

# Демонстрация работы
t = Turnstile()
t.process(Action.PUSH)   # Останется LOCKED
t.process(Action.COIN)   # Станет UNLOCKED
t.process(Action.COIN)   # Останется UNLOCKED
t.process(Action.PUSH)   # Станет LOCKED