Joe는 평균 BF 개발자입니다. 그는 상사로부터 전화를받을 때 코드 변경 사항을 저장소에 체크인하려고합니다. "Joe! 새로운 클라이언트의 시스템이 고장났습니다! brainfuck 인터프리터는 프로그램 실행 전에 모든 셀을 임의의 값으로 설정합니다.이를 고칠 시간이 없으면 코드를 처리해야합니다." Joe는 그것을 많이 생각하지 않고 그의 사장이 그를 다시 방해 할 때 처음으로 백만 개의 셀을 0으로 설정하는 프로그램을 작성하려고합니다. "... 그리고 무차별 대입에 대해 생각하지 마십시오. 코드는 최대한 작아야합니다. " 이제 당신은 가난한 조를 도와야합니다!
명세서
- 당신은 입력으로 유효한 brainfuck 코드를 얻을 것입니다
- 그런 다음 프로그램이 코드를 수정하여 임의의 brainfuck 인터프리터에서 작동하도록합니다.
- 이것은 프로그램 실행 전에 셀을 임의의 값으로 설정할 수 있음을 의미합니다.
- 새 프로그램은 초기 조건에 관계없이 동일한 동작을 수행해야합니다.
- 인터프리터는 줄 바꿈 및 무한 길이 테이프로 최대 셀 값이 255입니다.
채점
점수는 바이트 단위의 컴파일러 크기와 테스트 케이스 크기 의 합의 10 배 입니다. 테스트 케이스 최적화를 완화하기 위해, 의심이가는 경우 테스트 케이스를 변경할 권리가 있으며, 승자를 선택하기 전에 변경할 수도 있습니다.
테스트 사례
(나는 esolangs 페이지 와이 웹 페이지 에서 이것을 얻었습니다 : http://www.hevanet.com/cristofd/brainfuck/ ). 또한 마지막 테스트 사례에 대한 @Sparr 덕분입니다.
- 안녕하세요 세계 :
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- 역 입력 :
>,[>,]<[.<]
- 2의 거듭 제곱 (무한 스트림) :
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- 10000 미만의 제곱 :
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- 피보나치 스트림 :
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- 입력까지의 ASCII 시퀀스 :
,[.[>+<-]>-]
( 입력에 따라 다양한 셀 번호가 필요합니다)