이 도전은 나의 첫 비의 언어 인 백핸드 를 축하하기 위해 만들어졌습니다 !
백핸드는 비선형 포인터 흐름이있는 1 차원 언어입니다. 포인터는 한 번에 세 단계 씩 이동하며 세 번째 명령마다 실행됩니다.
프로그램 1..1..+..O..@
은 종료하기 전에 1 + 1을 추가하고 2를 출력합니다. 중간 명령어는 건너 뛰므로 1<>1()+{}O[]@
정확히 같은 프로그램입니다.
포인터가 테이프 끝에서 떨어지려고 할 때 대신 방향을 바꾸고 다른 방향으로 1.@1.O+.
갑니다. 같은 프로그램도 마찬가지입니다. 종료 명령은 한 번만 계산합니다. 이를 통해 다음과 같이 대부분의 선형 프로그램을 압축 할 수 있습니다1O+1@
여기서 과제는 문자열을 취하는 프로그램이나 함수를 작성하고 프로그램이 백핸드와 같이 해석 될 때 실행될 명령을 출력하는 것입니다 (실제 백핸드 명령을 처리 할 필요는 없습니다). 포인터가 문자열의 마지막 문자에 도달 할 때까지만 출력해야합니다 (이 시점에서 실행은 일반적으로 뒤로 이동합니다).
그러나 기다려라 , 그게 전부가 아니다! 프로그램 자체가 이러한 방식으로 해석되면 결과 코드는 다음 중 하나를 출력해야합니다.
(Mostly) works
Turing complete
'Recreational'
(따옴표는'
또는 중 하나"
일 수 있지만 둘 다일 수는 없습니다)Perfectly okay
Only a few bugs
예를 들어, 소스 코드가 code 2 backhand
인 경우 프로그램 ce cankb od2ahd
은 다음 구문 중 하나를 출력해야합니다.
테스트 사례 :
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
그리고 물론 백핸드로 작성된 참조 프로그램 ( 이것은 약간 버그가있을 수 있습니다. 알겠습니다.
규칙.
- 표준 허점 은 금지되어 있습니다
- 첫 번째 프로그램의 입력 (바이트이며, 인쇄 가능한 ASCII 줄 바꿈이 포함됩니다
0x20
-0x7E
뿐만 아니라 0x0A로) - 두 번째 프로그램을 첫 번째 바이트에서 UTF-8 문자로 변환할지 여부를 선택할 수 있습니다.
- 두 번째 프로그램 :
- 대소 문자는 중요 하지 않으므로
pErFectLy OKay
원하는 경우 출력이 될 수 있습니다 . - 후행 / 선행 공백 (줄 바꿈, 탭, 공백)도 괜찮습니다.
- 두 번째 프로그램은 첫 번째와 같은 언어 여야하지만 반드시 같은 형식 일 필요는 없습니다 (프로그램 / 기능)
- 여분의 문구에 대한 의견 제안이 너무 짧지 않은 한 기쁘다.
- 대소 문자는 중요 하지 않으므로
- 이것이 code-golf 이므로 귀하의 목표는 귀하의 언어에 대한 최단 답변을 얻는 것입니다!
- 2 주 안에 최단 백핸드 답변에 200 개의 현상금을 수여합니다.
"---!---!"
(또는 마지막 문자가 두 번 이상 나타나는 문자열)