Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Lập trình Web & Backend] Circuit breaker (máy trạng thái)

    Circuit breaker

    Một circuit breaker bảo vệ service khỏi gọi liên tục khi đang lỗi. Quy tắc đơn giản hóa:

    • Bắt đầu ở trạng thái CLOSED, biến đếm fail = 0.
    • Khi CLOSED: gặp F -> fail++; nếu fail >= threshold thì chuyển sang OPEN (và fail reset về 0). Gặp S -> fail = 0.
    • Khi OPEN: bỏ qua mọi gọi; nhưng sự kiện đặc biệt R (reset/timeout) chuyển sang HALF.
    • Khi HALF: gặp S -> chuyển CLOSED (fail=0). Gặp F -> chuyển OPEN (fail=0).

    Cho threshold và chuỗi sự kiện (gồm S,F,R), in ra trạng thái cuối cùng.

    Ví dụ

    Input:

    3
    FFF
    

    Output:

    OPEN
    
    • Định dạng đầu vào:

      Dòng 1: threshold. Dòng 2: chuỗi sự kiện gồm các ký tự S/F/R.

    • Ràng buộc đầu vào:

      1 <= threshold <= 100. Độ dài chuỗi <= 1000.

    • Định dạng đầu ra:

      Một dòng: trạng thái cuối CLOSED, OPEN hoặc HALF.

    Ví dụ:

    Đầu vào:

    3
    FFF
    

    Đầu ra:

    OPEN

    Giải thích:

    3 fail liên tiếp đạt threshold 3 nên breaker chuyển sang OPEN.

    Đang tải editor...