立体地,这是一种相当新的神秘语言,能够为非常具体的问题子集提供类似于高尔夫球的简短答案。它的独特之处在于它以3x3的Rubik多维数据集的形式存储内存,从而使计算远不如大多数语言简单。在Cubically中,程序员必须旋转内部多维数据集才能操作存储在面上的值,然后在计算中使用这些值。对存储在称为“记事本”的假想面上的单个32位整数执行计算。此外,Cubically可以请求用户输入并将其存储在仅包含一个整数值的输入缓冲区中。
魔方
立方体的面为U p,D own,L eft,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
面的值定义为该面上每个平方的和。例如,在上面的多维数据集中,face的0
值为3。
句法
通过首先将命令加载到内存中,然后将参数传递给它来执行命令来执行命令。例如,该命令F1
会将命令加载F
到内存中,然后使用参数调用它1
。另外,F13
将命令加载F
到内存中,然后使用参数1
调用它,然后使用参数调用3
。任何非数字字符均被视为命令,而任何数字均被视为参数。
你的任务
您的任务是以您选择的语言实现Cubically的内部存储多维数据集。您的代码应该能够执行该语言的很小一部分。
指令
R
-顺时针旋转多维数据集的右面指定次数。L
-顺时针旋转立方体的左表面指定次数。U
-顺时针旋转立方体的顶面指定次数。D
-顺时针旋转立方体的底面指定次数。F
-顺时针旋转立方体的正面指定次数。B
-顺时针旋转立方体的背面指定次数。%
-在给定的面上输出值。面的值定义为该面上所有平方的和。
规则
- 您可以使用在发布此挑战之前或之后创建的任何语言来编写能够解决此挑战的程序或函数。
- 输入将通过STDIN作为字符串或字符数组(您选择,请指定)传递。
- 输出必须传递给STDOUT或作为函数的输出,并且它必须是整数,仅包含数字的字符串或数字数组。如果您的语言要求您输出尾随换行符,则可以这样做。
- 输入将始终采用以下格式:
([UDLRFB]\d*)*%[0-5]
。输入中将没有空格字符。 - 的输入
%
将始终使用基于0的索引。
这是代码高尔夫球,因此最短答案以字节为单位。
测试用例
%0 -> 0
%1 -> 9
%2 -> 18
%3 -> 27
%4 -> 36
%5 -> 45
R1%2 -> 27
RD3F2%5 -> 32
L1R23F1B5U9D2%3 -> 17
3
这是问题的一个重复这个?
—
TehPers
@TehPers我认为这非常相似。对于将来的挑战,我建议将它们放在沙盒中至少24小时,如果仍然有疑问,则可以保留更长的时间。(我必须努力学习这一点;我的第一个挑战根本没有被很好地接受。这还没有结束或被否决,所以还不错,但是如果将其保留在沙箱中更长的时间,其他用户可能会发现了我没有发现的缺陷。)
—
MD XF
@MDXF我下次会记住这一点。谢谢!
—
TehPers '17
您是否错过了示例中和
—
乔纳森·艾伦
4
之间的倍数?R
D
RD3F2%5 -> 30