당신의 임무는 당신이 그것을 받아들이도록 선택해야합니다 – 왼쪽 또는 오른쪽으로 방향을주는 토큰의 문자열 (왼쪽에서 오른쪽으로 그리고 임의의 길이로)을 구문 분석하고 평가하는 프로그램을 만드는 것입니다. 네 가지 가능한 토큰과 그 의미는 다음과 같습니다.
> go right one single step
< go left one single step
-> go right the total amount of single steps that you've gone right, plus one,
before you previously encountered this token and reset this counter to zero
<- go left the total amount of single steps that you've gone left, plus one,
before you previously encountered this token and reset this counter to zero
프로그램이 구문 분석 할 수 있어야하는 방향의 토큰은 다음과 같은 형식으로 표시됩니다.
<<->-><<->->>->>->
다시 말해서, 그것들은 연결되어 있으며 올바른 방향의 우선 순위와 수행해야 할 단계의 양을 미리 파악하는 것이 프로그램의 임무입니다. 우선 순위는 다음과 같습니다 (가장 높은 순서에서 가장 낮은 순서로).
->
<-
>
<
당신이 발생하면 <-
시작 이후 또는 마지막 재설정 이후 왼쪽으로 단계를 수행하지 않은 , 왼쪽으로 한 단계 씩 이동하십시오. 같은 규칙이 적용 ->
되지만 오른쪽으로 이동합니다.
프로그램은 0에서 시작해야하며 결과는 최종 종료 위치를 나타내는 부호있는 정수 여야합니다.
입력이 항상 유효 할 것으로 예상 할 수 있습니다. <--->>--<
예를 들어).
입력 예 :
><->><-<-><-<>>->
이 예의 단계 :
step | token | amount | end position
------+-------+--------+--------------
1. | > | +1 | 1
2. | < | -1 | 0
3. | -> | +2 | 2
4. | > | +1 | 3
5. | <- | -2 | 1
6. | < | -1 | 0
7. | -> | +2 | 2
8. | <- | -2 | 0
9. | < | -1 | -1
10. | > | +1 | 0
11. | > | +1 | 1
12. | -> | +3 | 4
명확히하기 위해 : 프로그램의 출력은 부호있는 정수로만 최종 끝 위치에 있어야합니다. 위의 표는 내 예제에서 수행 한 단계를 보여주기위한 것입니다. 이러한 테이블, 테이블 행 또는 단계의 끝 위치 만 출력 할 필요가 없습니다. 부호있는 정수로서 최종 종료 위치 만 필요합니다.
일주일 후 가장 짧은 코드가 이깁니다.
<-
은 바로 뒤에<
또는 a가 오는 것입니다->
. 순서를 대표하는이 언어의 방법은 없습니다<-
다음>
이 될 것입니다 -go left the total amount of single steps that you've gone left, plus one, then go right one single step
. 이것이 정확하고 의도적 인 것입니까?