시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
Brainf*ck은 실용성보다 도전과 재미를 위해 만들어진 작은 튜링 완전 프로그래밍 언어이다. 이 문제에서는 입력 명령이 없는 변형을 해석한다.
이 언어는 0으로 초기화된 길이 32768의 바이트 배열과 배열의 첫 칸을 가리키는 포인터로 동작한다. 각 칸은 0부터 255까지의 값을 저장한다.
사용하는 명령어는 다음 7가지이며, 각 명령어는 한 글자이다.
>: 포인터를 오른쪽으로 한 칸 이동한다. 포인터가 32767이면 0으로 돌아간다.<: 포인터를 왼쪽으로 한 칸 이동한다. 포인터가 0이면 32767로 돌아간다.+: 현재 칸의 값을 1 증가시킨다. 255에서 증가하면 0이 된다.-: 현재 칸의 값을 1 감소시킨다. 0에서 감소하면 255가 된다..: 현재 칸의 값을 ASCII 문자로 출력한다.[: 현재 칸의 값이 0이면 짝이 되는 뒤쪽 ]로 이동한다.]: 현재 칸의 값이 0이 아니면 짝이 되는 앞쪽 [로 이동한다.Brainf*ck 프로그램이 주어졌을 때, 이 프로그램이 출력하는 내용을 출력하시오.
첫째 줄에 프로그램의 개수 T (1 <= T <= 100)가 주어진다. 각 프로그램은 한 줄 이상으로 구성되며, end만 적힌 줄에서 끝난다. 명령 문자(<>+-.[])가 아닌 문자는 실행 대상에서 제외한다. %가 나오면 그 줄에서 % 뒤에 있는 모든 문자는 주석으로 보아 무시한다. 한 프로그램에서 실제로 실행될 수 있는 명령어의 개수는 최대 128000개이다.
각 프로그램마다 먼저 PROGRAM #n:을 출력한다. n은 1부터 시작하는 프로그램 번호이다. 이어서 프로그램의 실행 결과를 출력한다. [와 ]의 짝이 맞지 않으면 프로그램을 실행하지 않고 COMPILE ERROR를 출력한다. 프로그램의 출력은 여러 줄일 수 있다.