2B에 대한 통역사 작성
나는 David Catt 의 난해한 언어 2B를 좋아한다 . 각 셀이 별도의 바이트 테이프 ( '서브 테이프') 인 테이프에 메모리가 저장되어있다. 통역사를 작성하십시오!
언어 사양
공식 사양은 여기에서 확인할 수 있습니다 . 본 명세서 "
에서, 범위 내의 숫자를 의미하고 0-9
( 0
로 해석 됨 10
) _
임의의 길이의 문자열을 의미한다. 각 셀은 range의 값을 저장 0-255
하고 오버플로 / 언더 플로는 BF와 같이 줄 바꿈됩니다. (@ MartinBüttner에게 감사합니다). 텍스트를 숫자로 변환하려면 ASCII 코드를0-255
사용하십시오 . 이에 대한 세부 정보를 찾을 수 없으므로 테이프 길이가 최소 가되어야한다고 말하지만 다른 방법을 알고 있다면 편집하십시오.255
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| Instruction | Description |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 0 | Zeroes the current cell and clears the overflow/underflow flag. |
| { | If the current cell is zero, jump to the matching }. |
| } | A placeholder for the { instruction. |
| ( | Read a byte from the input stream and place it in the current cell. |
| ) | Write the value of the current cell to the console. |
| x | Store the value of the current cell in a temporary register. |
| o | Write the value of the temporary register to the console. |
| ! | If the last addition overflowed, add one to the current cell. If the last subtraction underflowed, subtract one from the current cell. |
| ? | Performs a binary NOT on the current cell. |
| +" | Adds an amount to the current cell. |
| -" | Subtracts an amount from the current cell. |
| ^" | Moves the subtape up a number of times. |
| V" | Moves the subtape down a number of times. |
| <" | Moves the tape left a number of times. |
| >" | Moves the tape right a number of times. |
| :_: | Defines a label of name _. |
| *_* | Jumps to a label of name _. |
| ~_~ | Defines a function of name _. |
| @_@ | Calls a function of name _. |
| % | Ends a function definition. |
| #_# | Is a comment. |
| [SPACE] | Is an NOP. |
| [NEWLINE] | Is treated as whitespace and removed. |
| [TAB] | Is treated as whitespace and removed. |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
테스트
+0+0+0+0+0+0+0+2)+0+0+9)+7))+3)-0-0-0-0-0-0-0-9)+0+0+0+0+0+0+0+0+7)-8)+3)-6)-8)-7-0-0-0-0-0-0)
출력해야 Hello world!
+1:i:{()*i*}
cat
개행없이 프로그램의 종류 .
+1:loop:{@ReadChar@*loop*}@PrintHello@@WriteAll@(~ReadChar~(x-0-3<2o^1>1+1>1%~PrintHello~+0+0+0+0+0+0+0+2)-1+0+0+0)+7))+3)+1-0-0-0-0-0-0-0-0)%~WriteAll~<1x:reverse:{<1v1>1-1*reverse*}o-1:print:{-1<1)^1>1*print*}%
먼저 이름을 수락 한 다음를 누르면 Return출력해야합니다 Hello name
(여기서 name 은 입력 된 내용 임).
그 프로그램에 대한 학점은 David Catt 에게갑니다 .
전체 테스트 프로그램을 진행하고 있습니다.
규칙
- 표준 허점 은 금지되어 있습니다
- 통역사는 필요하지 않은 의견을 제외한 모든 사양을 충족해야합니다.
채점
- 이것은 code-golf 이므로 가장 적은 바이트가 이깁니다!
- 인터프리터가 주석을 처리하는 경우 -10 바이트
리더 보드
다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
# Language Name, N bytes
N
제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :
# Ruby, <s>104</s> <s>101</s> 96 bytes