あなたの仕事は、正規表現の各文字の置換を指定することにより、正規表現をコンパイルすることです...
正規表現
正規表現はこれらをサポートします
REGEX = (LITERAL REGEX / GROUP REGEX / STAR REGEX / ALTERNATIVE)
LITERAL = 1 / 0
GROUP = '(' REGEX ')'
STAR = (LITERAL / GROUP) '*'
ALTERNATIVE = '('REGEX ('|' REGEX)*')'
なぜ1または0だけなのですか?単純化のためです。したがって、正規表現には次の文字のみが含まれます。
*()|10
次のように解釈されます。
*
Kleene starです(左のグループまたはリテラルを0回以上繰り返します)。|
代替です(左側の正規表現または右側の正規表現のいずれかが一致する場合に一致します)。()
グループ化しています。1
文字1に一致します。0
文字0に一致します。
コンパイル方法
6つのコードスニペットを指定します。1つは各正規表現文字を置き換えます。たとえば、あなたの答えが:
*
: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