BFed
시간 제한1초메모리 제한128 MB
표준 입력에서 '#' 전까지 읽은 브레인퍽 프로그램을 해석한다. 30000칸 바이트 테이프에서 포인터 이동, 증감, 루프, 출력 등 일곱 명령을 처리한다.
문제
이 문제에서는 아주 단순한 프로그래밍 언어의 인터프리터를 작성합니다. 이 언어에는 원래 이름이 있지만, 여러 사정상 여기서는 BF라고 부르겠습니다.
BF 프로그램은 단순한 차원 메모리 셀 배열 위에서 동작하며, "현재" 셀을 가리키는 포인터가 하나 있습니다. 표준(vanilla) BF에서 이 배열의 크기는 이고, 각 셀은 비트 정수입니다. 즉, 셀은 부터 까지의 값을 저장합니다. 값이 인 셀을 증가시키면 으로 순환하고, 값이 인 셀을 감소시키면 로 순환합니다. 모든 셀은 처음에 으로 초기화되며, 포인터는 처음에 가장 왼쪽 셀을 가리킵니다.
BF 프로그램은 하나의 문자열입니다. 각 문자는 다음 개의 "명령" 중 하나일 수 있습니다.
, 명령은 구현하지 않아도 됩니다.
위에 나열된 처음 개의 명령을 제외한 BF 프로그램의 모든 문자는 무시해야 합니다. 프로그램은 처리할 문자가 더 이상 없을 때 종료됩니다.
흥미롭게도, 이 명령들은 (충분한 메모리와 시간, 그리고 인내심이 있다면) 다른 어떤 프로그래밍 언어로도 할 수 있는 모든 계산을 BF 프로그램으로 수행할 수 있을 만큼 강력합니다.
입력
인터프리터는 표준 입력으로 BF 프로그램을 받습니다. 프로그램은 여러 줄에 걸쳐 있을 수 있습니다. 프로그램은 해시 기호 #로 종료됩니다.
인터프리터에는 유효하지 않은 프로그램, 비정상적으로 오래 실행되는(혹은 무한히 실행되는) 프로그램, 배열의 왼쪽이나 오른쪽 끝을 벗어나 오류를 일으키는 프로그램은 주어지지 않는다고 가정해도 됩니다. 어떤 입력도 자를 넘지 않습니다.
출력
BF 프로그램을 실행한 결과 출력을 그대로 출력하세요. 프로그램이 만들어 낸 문자 외에는 아무 것도 출력하지 마세요.