Pyth 는 Python 기반의 골프 언어입니다. 접두사 표기법을 사용하며 각 명령에는 다른 arity (수용 가능한 인수 수)가 있습니다.
당신의 임무는 존재하지 않는 Pyth와 같은 언어 Pith에 대한 구문 검사기를 작성하는 것입니다.
피스의 문법
Pith에는 8 개의 단일 문자 명령 만 있습니다.
01234()"
01234
각각은 해당 숫자의 arity를 가지므로 많은 인수가 필요합니다. 예를 들어
400010
4
뒤에는 네 개의 인수가 0
0
0
있고 10
마지막 1
인수는 단일 인수 가 있기 때문에 올바른 Pith 프로그램 0
입니다. 이를 시각화하기 위해 다음 트리를 볼 수 있습니다.
R
|
4
|
-------------
| | | |
0 0 0 1
|
0
R
루트 노드는 어디에 있습니까 ? 이것을 생각하는 다른 방법은 각 숫자는 해당 노드가 위의 트리에있는 자식의 수를 나타냅니다.
하나 이상의 기본 명령을 가진 또 다른 유효한 Pith 프로그램이 있습니다.
210010
에 해당하는
R
|
-------------
| |
2 1
| |
--------- 0
| |
1 0
|
0
반면에
3120102100
초기 에는 두 개의 인수 만 있기 때문에 올바른 Pith 프로그램 이 아닙니다 . 3
아래 트리를 보면 알 수 있습니다.
R
|
3
|
------------------------ ??
| |
1 2
| |
2 ------
| | |
------ 1 0
| | |
0 1 0
|
0
다음 (
은 무제한을 시작하고 무제한을 )
종료합니다. 무제한은 많은 수의 인수를 취하고 (부정적으로) 모든 상위 명령에 대한 단일 인수로 계산됩니다. 프로그램이 끝날 때까지 열려있는 모든 제한은 자동으로 닫힙니다. )
더 unboundeds가 열려없는 경우 명령이 오류가 아닙니다 - 그냥 아무것도하지 않는다 *.
예를 들어, Pith 프로그램
)31(0)0(201000100
나무에 해당
R
|
3
|
------------------------------
| | |
1 0 (
| |
( -----------------------------
| | | | | |
0 2 0 0 1 0
| |
------- 0
| |
0 1
|
0
빈 무제한은 괜찮습니다 ()
. 유효한 Pith 프로그램도 마찬가지 입니다.
제한이없는 잘못된 Pith 프로그램은
12(010
2
하나만 인수를받지 않기 때문에 (무한한).
마지막으로 "
문자열을 시작하고 종료합니다. 문자열은 항상 0 개이며 단일 인수로 계산됩니다. 예 :
2"010""44)()4"
이는 단지입니다 2
두 개의 문자열 인수를 전달되는 "010"
과 "44)()4"
. 언 바운드와 마찬가지로 문자열도 비어있을 수 있으며 프로그램 끝의 닫히지 않은 문자열은 자동으로 닫힙니다.
*이 부분은 실제로 원래 Pyth 다른 수행 과 같은 경우에 무언가를 1)
1-인수에 대응을 종료하고 오류를 제기.
입출력
입력은 문자만으로 구성된 비어 있지 않은 단일 문자열 01234()"
입니다. 선택적으로 추가 후행 줄 바꿈이 항상 있다고 가정 할 수 있습니다. 이 도전에 대한 기능이나 전체 프로그램을 작성할 수 있습니다.
입력이 구문 상 유효한 Pith이면 참 값을, 그렇지 않으면 거짓 값을 출력해야합니다. 진실과 허위 값은 고정되어야하므로 1
하나의 유효한 프로그램과 2
다른 프로그램에 대해 출력 할 수 없습니다 .
채점
이것은 코드 골프이므로 가장 적은 바이트의 코드가 이깁니다.
테스트 사례
진실한 :
0
)
(
"
()
""
10
400010
210010
("")00
3"""""
(0)))0)1)0
2(2(2(0)0)0)0
2"010""44)()4"
)31(0)0(201000100
())2)1))0"3())"))
3("4321("301(0)21100"4")"123"00)40"121"31000""01010
거짓 :
1
1(310
(1)0)
12(010
4"00010"
3120102100
20(2((0)(0)))
2(2(2(0)0)0)01)
4(0102)00)00000
2"00"("00"2(""))
())2)1))0"3())"))
(참이어야한다, 나는 생각한다).
()210""
많은 운영
[( [2 [0] [1 [0] ] ] [0] [1 [0]] [0] ]
? 가지고있는 것은 2, 0, 0, 1 및 0의 가지를 가지고 있습니다-두 번째 것은 없어야합니다.