이 과제는 구현되지 않은 esolang Pada 에서 느슨하게 영감을 얻었습니다 .
모두 0으로 초기화 된 8 비트 배열을 고려하십시오. 임의의 문자열을 인쇄하기위한 매우 최소한의 명령어 세트를 소개합니다 두 가지 명령이 있으며, 둘 다 N
비트의 인덱스 인 매개 변수 를 사용합니다.
t N
대한 t이 oggle :이 비트의 값을 변경합니다N
.p N
위한 P의 RINT : 바이트로서 해석이 모두 8 비트는 비트부터N
끝 주변 포장 . 이 바이트에 해당하는 문자가 STDOUT에 인쇄됩니다.
예를 봅시다. 인쇄하고 싶습니다 :=
. 순진하게 우리는 이것을 다음과 같이 달성합니다 (0 기반 비트 인덱스).
t 2 [0 0 1 0 0 0 0 0]
t 3 [0 0 1 1 0 0 0 0]
t 4 [0 0 1 1 1 0 0 0]
t 6 [0 0 1 1 1 0 1 0]
p 0 [0 0 1 1 1 0 1 0] == 58 == ':'
t 5 [0 0 1 1 1 1 1 0]
t 6 [0 0 1 1 1 1 0 0]
t 7 [0 0 1 1 1 1 0 1]
p 0 [0 0 1 1 1 1 0 1] == 61 == '='
그러나 대신 순환 기능을 사용 p
하고 두 가지 명령을 저장할 수 있습니다.
t 2 [0 0 1 0 0 0 0 0]
t 3 [0 0 1 1 0 0 0 0]
t 4 [0 0 1 1 1 0 0 0]
t 6 [0 0 1 1 1 0 1 0]
p 0 [0 0 1 1 1 0 1 0] == 58 == ':'
t 1 [0 1 1 1 1 0 1 0]
p 7 [0 1 1 1 1 0 1 0] == [0 0 1 1 1 1 0 1] == 61 == '='
^
따라서 p 7
첫 번째 비트 대신 마지막 비트에서 바이트 값을 읽기 시작합니다.
도전
비어 있지 않은 인쇄 가능한 ASCII 문자 (0x20 ~ 0x7E 포함) 문자열이 제공되면 위의 시스템으로 해당 문자열을 인쇄하기위한 최적의 명령 목록 (명령 당 한 줄)을 생성하십시오. 여러 개의 최적 솔루션이있는 경우 (거의 항상 발생 함) 그 중 하나만 생성하십시오.
비트에 대해 0 기반 및 1 기반 인덱싱 중에서 선택할 수 있지만 원하는대로 선택하십시오.
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다. 결과를 STDOUT으로 인쇄하지 않으면 여전히 줄 바꿈으로 구분 된 단일 문자열이어야합니다.
이것은 코드 골프이므로 가장 짧은 대답 (바이트)이 이깁니다.
테스트 사례
각 테스트 케이스는 입력 문자열을 포함하는 단일 행이며, 최적의 명령 수와 하나의 가능한 솔루션이 이어집니다.
솔루션에 명령어 수를 출력 해서는 안됩니다. 여기에는 여기 만 포함되므로 다른 명령어 목록을 인쇄하는 경우 코드의 정확성을 확인할 수 있습니다.
?
7 instructions
t 2
t 3
t 4
t 5
t 6
t 7
p 0
:=
7 instructions
t 2
t 3
t 4
t 6
p 0
t 1
p 7
0123456789
26 instructions
t 2
t 3
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
t 5
t 6
t 7
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
t 2
t 3
p 3
t 2
p 3
9876543210
28 instructions
t 2
t 3
t 4
t 7
p 0
t 7
p 0
t 0
t 7
p 5
t 4
p 5
t 0
t 5
p 0
t 7
p 0
t 5
t 6
t 7
p 0
t 7
p 0
t 6
t 7
p 0
t 7
p 0
Hello, World!
39 instructions
t 1
t 4
p 0
t 3
t 7
p 2
t 1
t 6
p 2
p 2
t 0
t 1
p 2
t 0
t 1
t 3
p 2
t 6
t 7
p 2
t 0
t 2
t 6
t 7
p 1
t 0
t 1
t 5
p 0
t 2
t 7
p 3
t 2
t 6
p 0
t 4
p 0
t 1
p 3
The quick brown fox jumps over the lazy dog.
150 instructions
t 1
t 3
t 5
p 0
t 1
t 2
p 1
t 1
t 3
t 7
p 0
t 1
t 5
t 7
p 0
t 1
t 3
t 7
p 0
t 5
p 0
t 3
t 4
t 5
p 0
t 4
t 6
p 0
t 4
p 0
t 1
t 4
t 6
t 7
p 0
t 1
t 6
p 0
t 3
p 0
t 0
t 5
p 4
t 0
t 7
p 0
t 1
p 1
t 3
t 5
t 6
t 7
p 0
t 1
t 5
t 6
p 0
t 4
t 7
p 0
t 1
t 2
p 3
t 5
t 6
t 7
p 2
t 1
t 2
t 6
p 0
t 0
p 7
t 0
t 7
p 5
t 3
t 4
t 6
t 7
p 0
t 6
t 7
p 0
t 1
t 3
t 6
t 7
p 0
t 1
t 4
t 5
t 6
t 7
p 0
t 4
p 4
t 6
p 0
t 1
t 6
p 4
t 5
t 6
t 7
p 0
t 1
t 3
t 5
p 0
t 1
p 1
t 1
t 3
t 7
p 0
t 1
t 5
t 7
p 0
t 1
t 4
t 5
p 0
t 1
p 3
t 3
t 7
p 1
t 1
t 5
p 0
t 1
t 3
t 4
t 7
p 0
t 1
t 5
p 0
t 4
t 6
t 7
p 0
t 4
p 0
t 1
t 4
t 7
p 0
테스트 사례는이 CJam 참조 구현 으로 생성되었습니다 .