당신의 작업은 정규 표현식에서 각 문자의 대체를 지정하여 정규 표현식을 컴파일하는 것입니다.
정규식
정규 표현식은 다음을 지원합니다.
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 개의 코드 스 니펫을 지정합니다 (각 정규식 문자를 대체하기 위해 하나씩). 예를 들어 대답이 다음과 같은 경우
*
: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