HQ0-9+-INCOMPUTABLE?!
시간 제한1초메모리 제한1024 MB
주어진 목표 문자열을 출력하도록 10000개 이하의 HQ0-9+-INCOMPUTABLE?! 명령으로 이루어진 프로그램을 작성한다.
문제
HQ9+는 특정 작업에 특화된 난해한 프로그래밍 언어다. 예를 들어 "Hello, world!"를 출력하거나 퀴인(자신을 출력하는 프로그램)을 작성하는 일은 이보다 더 간단할 수 없다. 안타깝게도 HQ9+는 대부분의 다른 상황에서는 별로 쓸모가 없다. 그래서 우리는 이 언어의 자체 변형인 HQ0-9+-INCOMPUTABLE?!를 만들었다.
HQ0-9+-INCOMPUTABLE?! 프로그램은 공백 없이 한 줄로 작성된 명령어의 나열이다(끝의 개행 문자는 제외). 프로그램은 두 개의 메모리 영역에 데이터를 저장할 수 있다. 버퍼는 문자열이고, 누산기는 정수 변수다. 처음에 버퍼는 비어 있고 누산기는 0으로 설정된다. 모든 명령을 실행한 후의 버퍼 값이 프로그램의 출력이 된다.
HQ0-9+-INCOMPUTABLE?!는 다음 명령을 지원한다.
| `?` | 버퍼 끝에서 47개 문자를 제거한다(버퍼가 너무 짧으면 전부 제거한다) |
| `!` | 버퍼 앞에서 47개 문자를 제거한다(버퍼가 너무 짧으면 전부 제거한다) |
보다시피 HQ0-9+-INCOMPUTABLE?!는 HQ9+보다 훨씬 강력하다. HQ0-9+-INCOMPUTABLE?! 프로그램을 작성하여 로그인하면 보이는 값을 출력함으로써 이를 증명하라.
제한
프로그램은 최대 10000개 명령어 길이여야 한다. 누산기는 무한하다(임의로 큰 정수를 저장할 수 있다). 각 명령 후 버퍼는 최대 10000자 길이여야 한다. 코드 주입 취약점을 방지하기 위해, 프로그램 실행 중 버퍼는 절대 영숫자가 아닌 문자, 즉 A-Z, a-z, 0-9 이외의 문자를 포함해서는 안 된다. 이를 어기면 프로그램은 런타임 오류로 실패하고 제출은 거부된다.