ในหนังสือวิทยาศาสตร์คอมพิวเตอร์ที่เป็นที่นิยม (และจำเป็น), คำนำของภาษาทางการและออโตมาตะโดยปีเตอร์ลินซ์, ภาษาทางการดังต่อไปนี้มักถูกกล่าวถึง:
ส่วนใหญ่เป็นเพราะภาษานี้ไม่สามารถประมวลผลด้วยออโต้ จำกัด ขอบเขต การแสดงออกนี้หมายถึง "ภาษา L ประกอบด้วยสตริงทั้งหมดของ 'a's ตามด้วย' b's ซึ่งจำนวนของ 'a's และ' b's เท่ากันและไม่เป็นศูนย์"
ท้าทาย
เขียนโปรแกรม / ฟังก์ชั่นการทำงานที่รับค่าสตริงซึ่งบรรจุ "a" s และ "b" s เท่านั้นเป็นค่าป้อนเข้าและส่งคืน / ส่งออกค่าความจริงโดยบอกว่าสตริงนี้ถูกต้องหรือไม่
โปรแกรมของคุณไม่สามารถใช้เครื่องมือการคำนวณภายนอกใด ๆ รวมถึงเครือข่ายโปรแกรมภายนอก ฯลฯ เชลล์เป็นข้อยกเว้นสำหรับกฎนี้ Bash เช่นสามารถใช้อรรถประโยชน์บรรทัดคำสั่ง
โปรแกรมของคุณจะต้องส่งคืน / ส่งออกผลลัพธ์ด้วยวิธี "ตรรกะ" ตัวอย่างเช่น: คืนค่า 10 แทน 0, เสียง "บี๊บ" ส่งออกไปยัง stdout เป็นต้นข้อมูลเพิ่มเติมที่นี่
บังคับใช้กฎกอล์ฟมาตรฐาน
นี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ โชคดี!
กรณีทดสอบความจริง
"ab"
"aabb"
"aaabbb"
"aaaabbbb"
"aaaaabbbbb"
"aaaaaabbbbbb"
กรณีทดสอบเท็จ
""
"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
และnon-empty string == falsy
เป็นที่ยอมรับ?
a^n b^n
หรือคล้ายกันแทนที่จะเป็นเพียงจำนวนa
ที่เท่ากับจำนวนของb
)