큐빅 (Cubically) 은 매우 특정한 문제의 부분에 대해 골프 같은 짧은 답변을 만들 수있는 상당히 새로운 난해한 언어입니다. 메모리는 3x3 Rubik의 큐브 형태로 메모리를 저장하여 대부분의 언어보다 계산이 덜 사소하다는 점에서 독특합니다. 입방체에서 프로그래머는면에 저장된 값을 조작하기 위해 내부 큐브를 회전 한 다음 해당 값을 계산에 사용해야합니다. 계산은 "메모장"으로 알려진 가상의 얼굴에 저장된 단일 32 비트 정수에서 수행됩니다. 또한 Cubically는 사용자 입력을 요청하여 단일 정수 값으로 만 구성된 입력 버퍼에 저장할 수 있습니다.
큐브
큐브의면은 U의 P, D는 자신의, L의 송금, R의 ight, F의 ront 및 B의 ACK :
UUU
UUU
UUU
LLLFFFRRRBBB
LLLFFFRRRBBB
LLLFFFRRRBBB
DDD
DDD
DDD
프로그램이 시작되면 큐브는 해당면의 각 사각형이 해당면의 0 기반 인덱스와 같도록 초기화됩니다.
000
000
000
111222333444
111222333444
111222333444
555
555
555
면이 회전 할 때마다 항상 시계 방향으로 회전합니다.
Cubically> F1
000
000
111
115222033444
115222033444
115222033444
333
555
555
면의 값은 해당면의 모든 사각형의 합으로 정의됩니다. 예를 들어, 위 큐브에서면의 값 0
은 3입니다.
통사론
명령은 먼저 명령을 메모리에로드 한 다음 명령을 실행하기 위해 인수를 전달하여 실행됩니다. 예를 들어, 명령 F1
은 명령 F
을 메모리에 로드 한 다음 인수로 호출합니다 1
. 또한 F13
명령 F
을 메모리에 로드 한 다음 argument 1
로 호출 한 다음 argument 로 호출하십시오 3
. 숫자가 아닌 문자는 명령으로 취급되고 모든 숫자는 인수로 취급됩니다.
당신의 작업
귀하의 작업은 원하는 언어로 Cubically의 내부 메모리 큐브를 구현하는 것입니다. 코드는 언어의 작은 부분 집합을 실행할 수 있어야합니다.
명령
R
-큐브의 오른쪽면을 지정된 횟수만큼 시계 방향으로 돌립니다.L
-큐브의 왼쪽면을 지정된 횟수만큼 시계 방향으로 돌립니다.U
-큐브의 윗면을 지정된 횟수만큼 시계 방향으로 돌립니다.D
-큐브의 밑면을 지정된 횟수만큼 시계 방향으로 돌립니다.F
-큐브의 앞면을 지정된 횟수만큼 시계 방향으로 돌립니다.B
-큐브의 뒷면을 지정된 횟수만큼 시계 방향으로 돌립니다.%
-주어진면의 값을 출력합니다. 면의 값은 해당면의 모든 사각형의 합으로 정의됩니다.
규칙
- 이 챌린지를 게시 한 날짜 이전 또는 이후에 생성 된 모든 언어를 사용하여이 챌린지를 해결할 수있는 프로그램 또는 기능을 작성할 수 있습니다.
- 입력은 STDIN을 통해 문자열 또는 문자 배열로 전달됩니다 (선택하십시오).
- 출력은 STDOUT으로 전달되거나 함수의 출력으로 전달되어야하며 정수, 숫자 만 포함 된 문자열 또는 숫자 배열이어야합니다. 언어에 따라 줄 바꿈을 출력 해야 할 경우 그렇게 할 수 있습니다.
- 입력은 항상 다음 형식
([UDLRFB]\d*)*%[0-5]
입니다.. 입력에 공백 문자가 없습니다. - 에 대한 입력
%
은 항상 0 기반 인덱스를 사용합니다.
이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
테스트 사례
%0 -> 0
%1 -> 9
%2 -> 18
%3 -> 27
%4 -> 36
%5 -> 45
R1%2 -> 27
RD3F2%5 -> 32
L1R23F1B5U9D2%3 -> 17
더 많은 테스트 사례 는 TIO 인터프리터를 확인하십시오 . TIO가 작동하지 않으면 Lua 인터프리터를 대신 사용할 수 있습니다 .
4
사이 의 배수를 놓치셨습니까 ? R
D
RD3F2%5 -> 30