입방체 는 코드를 수동으로 작성하기에는 너무 지루합니다. 문제는 ASCII 텍스트를 입방체 소스 코드로 변환하는 것입니다.
입방체
이것은 Cubically의 빠른 요약입니다. 저장소는 더 완전한 가이드 및 세부 사항이 있습니다.
큐빅은 내가 사용하기에 고통스러워 지도록 오래 전에 쓴 esolang입니다. 여기에는 3x3x3 Rubik의 큐브와 "메모장"이라는 레지스터가 있습니다.
기억
내부 Rubik 's Cube는 다음과 같이 초기화됩니다.
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 down face
555
오른쪽에서 시계 방향으로 90 ° 회전 한 후 메모리 큐브는 다음과 같습니다.
002
002
002
111225333044
111225333044
111225333044
554
554
554
명령
정수가 아닌 문자가 기본 명령을 설정합니다. 기본 명령이 다시 한 번 설정되기 전에 각 정수에 대해 해당 정수로 명령이 수행됩니다. 예를 들어 5로 x524y312
명령 x
을 수행 한 다음 2로, 4로 명령을 수행 y
한 다음 3으로 명령을 수행 한 다음 1로, 2로 명령을 수행 합니다.
명령이 사용하는 정수는면 인덱스를 나타냅니다. 그래서 x0
수행 할 x
위 (0 인덱스) 얼굴에. LEFT (1 인덱스) 얼굴에서 x1
수행 x
하는 등의 작업 을 수행 합니다.
with 명령을 6
수행하면 메모장 값에서 해당 명령이 수행됩니다. 6보다 큰 정수로 명령을 수행하면 오류가 발생합니다.
다음은 몇 가지 명령 예입니다.
R1
-내부 큐브가 위의 두 번째 예와 같이 보이도록 오른쪽면을 시계 방향으로 90도 돌립니다.R11
-오른쪽면을 시계 방향으로 90도 두 번 돌리십시오.R2
+0
-UP면의 모든 값을 메모장에 추가하십시오.+000
-UP면의 모든 값을 메모장에 세 번 추가@6
-존재하지 않는 6 색 색인 얼굴 (메모리)을 문자로 인쇄%4
-뒷면의 모든 값의 합계를 정수로 인쇄
명령 및 구문의 전체 목록은 저장소 에서 사용할 수 있습니다 .
도전
ASCII 텍스트를 입력으로 사용하고 Cubically 프로그램을 출력으로 인쇄합니다.
Input -> Output
Hello, World! -> +53@6+1F2L2+0@6L2F2U3R3F1L1+2@66L3F3R1U1B3+0@6:4U1R1+00@6-000@6*0-4+000@6-00@6+2-000000@6-5+4000@6-00@6/0+00@6:0+0/0+00@6
1$2$3$4$5$6$7$8$9$10$ -> B1+2/2%6@4+00/0%6@4+00/1%6@4+21/1%6@4+30/0%6@4+22/1%6@4+22/1%6@4+40/1%6@4+52/1%6@4+42/1%6@4
규칙
- 프로그램에 100 개의 테스트 케이스에 대한 번역이 포함 된 사전이 포함되어 있지 않을 수 있습니다.
- 프로그램은 180 초 이내에 완료해야합니다 (몇 주가 걸리는 무차별 프로그램은 없음).
- 프로그램은 180 초 이내에 끝나는 유효한 Cubically 코드를 출력해야합니다.
- 테스트 드라이버를 엉망으로 만들지 않는 한 프로그램은 표준 입력을 통해 입력을받습니다.
- 프로그램은 실행시 프로그램의 입력 만 생성하는 입방체 코드를 출력해야합니다. ಠ_ಠ
채점
의사 난수 길이의 100 개의 의사 난수 문자열로 프로그램을 테스트합니다. (이 작업을 수행하는 bash 스크립트가 제공됩니다.) 다음은 점수를 매기는 방법입니다.
- 출력 프로그램의 길이를 o로 설정하십시오 .
- 입력 문자열의 길이를 l로 설정하십시오 .
- 변수 r 을 o / l 의 결과라고 하자 .
- 모든 r 의 평균을 구합니다 : (r 1 + r 2 + r ... + r 100 ) / 100 .
이 스크립트로 테스트하십시오. 지시에 따라 수정해야합니다. 프로그램은 출력이 유효한 Cubically 코드인지 여부를 확인하지 않습니다. 스크립트가 작동하지 않으면 도와 드릴 수 있습니다. Cubically 대화방 에서 나를 핑 .
@6
존재하지 않는 6 번째 색인 얼굴 (메모장)의 합계를 문자로 인쇄"가 더 정확합니까? 인가 %4
도 합? 있습니까 +
명령 합 얼굴 그리고 ... 모든 값 또는 해당 추가?
@6
/ %6
은 메모장 값을 문자 / 정수로 직접 인쇄합니다. @x
/ %x
(여기서 x는 기존 x
면임 )는 인덱스 된면 에 모든 값을 추가 하고 합계를 문자 / 정수로 인쇄합니다. +
지정된면의 모든 값을 레지스터에 추가합니다.