Trong cuốn sách khoa học máy tính phổ biến (và thiết yếu), Giới thiệu về Ngôn ngữ chính thức và Automata của Peter Linz, ngôn ngữ chính thức sau đây thường được nêu:
chủ yếu là vì ngôn ngữ này không thể được xử lý với automata trạng thái hữu hạn. Biểu thức này có nghĩa là "Ngôn ngữ L bao gồm tất cả các chuỗi 'a theo sau là' b ', trong đó số' a 'và' b 'bằng nhau và khác không".
Thử thách
Viết chương trình / hàm làm việc có một chuỗi, chỉ chứa "a" s và "b" , làm đầu vào và trả về / xuất giá trị thật , cho biết nếu chuỗi này hợp lệ là ngôn ngữ chính thức L.
Chương trình của bạn không thể sử dụng bất kỳ công cụ tính toán bên ngoài nào, bao gồm mạng, chương trình bên ngoài, v.v ... Shell là một ngoại lệ đối với quy tắc này; Bash, ví dụ, có thể sử dụng các tiện ích dòng lệnh.
Chương trình của bạn phải trả về / xuất kết quả theo cách "hợp lý", ví dụ: trả về 10 thay vì 0, âm thanh "bíp", xuất ra thiết bị xuất chuẩn, v.v. Thông tin thêm ở đây.
Quy tắc golf tiêu chuẩn áp dụng.
Đây là một mã golf . Mã ngắn nhất trong byte thắng. Chúc may mắn!
Trường hợp thử nghiệm thật
"ab"
"aabb"
"aaabbb"
"aaaabbbb"
"aaaaabbbbb"
"aaaaaabbbbbb"
Trường hợp thử nghiệm giả
""
"a"
"b"
"aa"
"ba"
"bb"
"aaa"
"aab"
"aba"
"abb"
"baa"
"bab"
"bba"
"bbb"
"aaaa"
"aaab"
"aaba"
"abaa"
"abab"
"abba"
"abbb"
"baaa"
"baab"
"baba"
"babb"
"bbaa"
"bbab"
"bbba"
"bbbb"
empty string == truthy
và non-empty string == falsy
được chấp nhận?
a^n b^n
hoặc tương tự, thay vì chỉ số a
s bằng số b
s)