매우 간단한 언어 정의는 다음과 같습니다.
A Variable is any string that does not contain ^, <, >, !, or ?
The empty string is a valid variable identifier
The value of every variable starts at 0.
A Statement is one of (var is a Variable, P is a Program):
var^ -> changes var to be equal to 1 more than itself
var<P> -> while var > 0, changes var to be equal to 1 less than itself, then runs P
var! -> output value of var
var? -> ask for non-negative integer as input, increase var by that value
A Program is a concatenation of Statements, running a Program means running each Statement in order
예제 프로그램 (빈 문자열은 변수이지만 명확성을 위해 드물게 사용하고 일부 변수는 기본적으로 기본적으로 0 일 때 프로그램에서 0으로 설정됩니다).
<>: sets the value of the empty string variable to 0
b<>b?b<a^>: asks for b, then adds the value stored in b to a, zeroing b in the process
b<>b?a<>b<a^>: asks for b, then sets a to the value of b, zeroing b in the process
a<>c<>b<a^c^>c<b^> : copies the value in b into a without zeroing it
b<>c<>a<c^c^c<b^>>b! : outputs a multiplied by 2
b^b<a<>a?a!b^> : outputs what you input, forever
귀하의 목표는이 언어에 대해 가장 작은 통역사를 작성하는 것입니다.
변수의 값은 임의로 클 수 있으며 이론상 언어가 액세스 할 수있는 총 메모리에 의해서만 제한되어야하지만 최대 2 ^ 256까지의 값만 처리하면됩니다.
프로그램은 이론적으로 임의로 긴 프로그램을 처리 할 수 있어야하지만 2 ^ 32 자 미만의 프로그램에서만 작업해야합니다. 최대 2 ^ 32의 중첩 깊이 루프도 처리해야합니다.
프로그램이 유효한 프로그램이고 입력을 요청할 때 음이 아닌 정수만 얻게된다고 가정 할 수 있습니다. 입력 문자열에 ASCII 인쇄 가능 문자 만 포함되어 있다고 가정 할 수도 있습니다.
당신이 해석하는 프로그램의 속도는 중요하지 않습니다. 최적화없이 5 자리 곱셈처럼 단순한 것은 이미 고통스럽게 느려질 것입니다.
언어에 설명 된 방식으로 입력을 합리적으로 받아들이거나 출력을 생성 할 수없는 언어를 사용하려는 경우 가능한 해석을 사용하십시오. 이는 언어가 필요한 동작을 구현할 수없는 모든 이유에 적용됩니다. 모든 언어가 경쟁하기를 원합니다.
최단 프로그램이 이깁니다. 표준 허점이 적용됩니다.