2
บีบอัดข้อมูลด้วยไวยากรณ์ที่ไม่มีบริบท
เป็นไปได้ที่จะบีบอัดข้อมูลบางประเภทเช่นข้อความของมนุษย์หรือซอร์สโค้ดด้วยไวยากรณ์แบบเส้นตรง โดยทั่วไปคุณสร้างไวยากรณ์ที่ภาษามีคำเดียว - ข้อมูลที่ไม่ได้บีบอัด ในงานนี้คุณต้องเขียนโปรแกรมที่ใช้วิธีการประมวลผลข้อมูลนี้ อินพุต อินพุตเป็นสตริงที่มีความยาวไม่เกิน 65535 ไบต์ มีการประกันว่าอินพุตนั้นตรงกับนิพจน์ทั่วไป[!-~]+(เช่นอย่างน้อยหนึ่งตัวอักษร ASCII ที่พิมพ์ได้ซึ่งไม่รวมช่องว่าง) ตัวอย่างอินพุตคือ abcabcbcbcabcacacabcabab เอาท์พุต เอาท์พุทเป็นชุดของกฎที่เป็นไวยากรณ์ที่อธิบายว่าหนึ่งคำ (อินพุต) แต่ละ nonterminal จะแทนด้วยตัวเลขทศนิยมมากกว่า 9 สัญลักษณ์เริ่มต้นคือหมายเลขสัญลักษณ์สิบ เอาต์พุตตัวอย่างที่สอดคล้องกับอินพุตตัวอย่างได้รับด้านล่าง ไวยากรณ์ของมันจะอธิบายเพิ่มเติมด้านล่าง: 10=11 11 12 12 11 13 13 11 14 14 11=a 12 12=b c 13=a c 14=a b แต่ละกฎมีรูปแบบที่<nonterminal>=<symbol> <symbol> ...มีจำนวนของสัญลักษณ์ที่คั่นด้วยช่องว่างโดยพลการทางด้านขวา แต่ละเอาต์พุตที่ปฏิบัติตามข้อ จำกัด ต่อไปนี้และได้รับสตริงอินพุตที่ถูกต้อง ข้อ จำกัด …