Một trình phân tích "ngây thơ" phát tín hiệu lỗi tại một số vị trí token (do lỗi gốc gây ra hiệu ứng dây chuyền lan sang các token lân cận). Để tránh làm người lập trình rối mắt vì hàng loạt thông báo lỗi cùng một nguyên nhân, trình biên dịch áp dụng quy tắc ức chế lỗi theo cửa sổ: một tín hiệu lỗi tại vị trí i chỉ thực sự được báo cáo nếu không có lỗi nào đã được báo cáo trong vòng k token gần nhất trước đó — tức là, gọi j là vị trí lỗi được báo cáo gần nhất trước i (nếu có), tín hiệu tại i được báo cáo khi và chỉ khi j không tồn tại, hoặc i−j>k.
Xử lý các tín hiệu lỗi theo đúng thứ tự vị trí tăng dần từ 1 đến n.
Ví dụ: n=10 token, tín hiệu lỗi tại các vị trí 2,3,5,8, k=2. Vị trí 2 được báo cáo (chưa có lỗi trước đó). Vị trí 3: 3−2=1≤2 → bị ức chế. Vị trí 5: 5−2=3>2 → được báo cáo. Vị trí 8: 8−5=3>2 → được báo cáo. Tổng cộng 3 lỗi được báo cáo trong số 4 tín hiệu gốc.
In ra 3 dòng:
Ví dụ:
Đầu vào:
5
0 0 0 0 0
3
Đầu ra:
0
0
Đầu vào:
10
0 1 1 0 1 0 0 1 0 0
2
Đầu ra:
4
3
2 5 8
Đang tải editor...