Một vấn đề phân tích cú pháp Brainfuck khác, nhưng lần này ... khác.
Bạn đang làm việc trong Infinite Monkeys Incorporated, công ty sản xuất các chương trình Brainfuck, để giải quyết các vấn đề thú vị khác nhau (tình cờ, không kém - sau tất cả, công ty thực hiện các chương trình ngẫu nhiên). Tuy nhiên, có vẻ như các máy Turing nhanh của bạn chỉ thực hiện Brainfuck có một vấn đề nhỏ và tốn kém với lỗi cú pháp - tạo một và máy tính phát nổ. Đây có thể là một lỗ hổng thiết kế, nhưng không ai bận tâm để tìm hiểu lý do tại sao nó xảy ra.
Vì các máy Turing (đặc biệt là máy nhanh) rất đắt tiền (xét cho cùng, chúng có RAM vô hạn có giá), sẽ tốt hơn để đảm bảo rằng chương trình không có bất kỳ lỗi cú pháp nào trước khi thực thi mã. Công ty của bạn sẽ chạy rất nhiều mã, vì vậy xác minh thủ công sẽ không hoạt động. Viết chương trình đọc mã STDIN cho mã Brainfuck và thoát với trạng thái thoát được đặt thành bất kỳ giá trị nào khác 0 (lỗi) nếu chương trình có bất kỳ lỗi cú pháp nào (ví dụ:
]
là lỗi cú pháp, vì không khớp[
). Thoát với trạng thái thoát được đặt thành 0 nếu chương trình hoàn toàn tốt.Hãy chắc chắn rằng chương trình của bạn thông báo chính xác các lỗi liên quan
[]
. Bạn sẽ không muốn một máy tính khác phát nổ, phải không? Ồ, và đảm bảo rằng nó càng ngắn càng tốt - sếp của bạn trả tiền cho các chương trình ngắn (vì anh ta nghĩ rằng chúng nhanh, hoặc một cái gì đó). Ồ, và bạn không phải mã hóa trong Brainfuck (thực tế, bạn không thể, vì Brainfuck không hỗ trợ mã thoát) - mã của bạn sẽ được chạy trên máy tính bình thường.
Vì vậy, như bạn có thể thấy, công việc của bạn là kiểm tra xem chương trình Brainfuck có "hợp lệ" không (có []
các biểu tượng được ghép nối ). Xin lưu ý rằng các chương trình Brainfuck có thể có các nhân vật khác hơn []
, vì vậy đừng từ chối chương trình chỉ vì nó có các lệnh khác. Mã nhỏ nhất sẽ thắng, nhưng có lẽ bạn sẽ quan tâm nhiều hơn về upvote.
GCD(a,b)
thay vì 0 != a || b
.