งาน
กำหนดregex อย่างง่ายเป็นนิพจน์ปกติที่ไม่ว่างประกอบด้วยเพียง
- ตัวอักษร
0
และ1
, - การจัดกลุ่มวงเล็บ
(
และ)
, +
อย่างใดอย่างหนึ่งหรือมากกว่าปริมาณการทำซ้ำ
ด้วยสตริง0
และ1
s ที่ไม่ว่างเปล่าโปรแกรมของคุณควรค้นหา regex ที่สั้นที่สุดที่ตรงกับสตริงอินพุตแบบเต็ม (นั่นคือเมื่อจับคู่ regex ธรรมดาให้ทำท่าว่ามันถูก bookended โดย^
และ $
.) หากมี regexes ที่สั้นที่สุดหลายอันให้พิมพ์ใด ๆ หรือทั้งหมด)
code-golfดังนั้นการส่งที่สั้นที่สุด (เป็นไบต์) จะชนะ
กรณีทดสอบ
1 -> 1
00 -> 00 or 0+
010 -> 010
1110 -> 1+0
01010 -> 01010
0101010 -> 0(10)+ or (01)+0
011111 -> 01+
10110110 -> (1+0)+
01100110 -> (0110)+ or (01+0)+
010010010 -> (010)+
111100111 -> 1+001+ or 1+0+1+
00000101010 -> 0+(10)+ or (0+1)+0
1010110001 -> 1(0+1+)+ or (1+0+)+1
01100110
เป็นกรณีที่น่าสนใจ ... อัลกอริทึมไร้เดียงสาจะเขียน01+0+1+0
หรือ(0+1+)+0
ที่ไม่เหมาะสม