您的任务是通过为正则表达式中的每个字符指定替换来编译正则表达式。
正则表达式
正则表达式支持这些
REGEX = (LITERAL REGEX / GROUP REGEX / STAR REGEX / ALTERNATIVE)
LITERAL = 1 / 0
GROUP = '(' REGEX ')'
STAR = (LITERAL / GROUP) '*'
ALTERNATIVE = '('REGEX ('|' REGEX)*')'
为什么只有1或0?这是为了简化。因此,正则表达式仅具有以下字符:
*()|10
其解释如下:
*
是Kleene星号(重复左组或字面量0次或多次)。|
是交替(如果左侧的正则表达式或右侧的正则表达式匹配,则匹配)。()
正在分组。1
匹配字符1。0
匹配字符0。
怎么编译?
您指定了六个代码段:一个用于替换每个正则表达式字符。例如,如果您的答案是:
*
:FSAGFSDVADFS
|
:GSDGSAG
(
:GSDG
)
:GDSIH
1
:RGIHAIGH
0
:GIHEBN
然后,将每个正则表达式替换为其各自的代码段,因此:
(0|11)*
变成:
GSDGGIHEBNGSDGSAGRGIHAIGHRGIHAIGHGDSIHFSAGFSDVADFS
结果程序应该做什么?
您的程序将:
- 接受输入。
- 如果正则表达式匹配整个输入,则输出真实值。
- 否则输出虚假值。
外部输入01
受约束的未定义行为。输入可以为空。
附加规则
- 对于给定的正则表达式字符,结果片段必须始终相同。
- 此后没有添加前缀或后缀字符。
- 正则表达式保证为非空。
计分
最少的摘要是获胜者。因此,示例案例的得分将计算如下:
FSAGFSDVADFS
+ GSDGSAG
+ GSDG
+ GDSIH
+ RGIHAIGH
+GIHEBN
12 + 7 + 4 + 5 + 8 + 6 = 42