2015.8.23阿里的算法工程师在线笔试附加题第1题

一个三阶魔方由六个面组成,颜色分别是白色(W)、对面为黄色(Y)、红色(R)、对面为橙色(O)、绿色(G)、对面为蓝色(B)。如果手持魔方,白色向上,红色朝向自己,则绿色在左手侧。请写一个程序,对一个处于还原状态(各面各块同色)的魔方,进行操作,打印操作后的魔方状态。操作指令为单个操作指令组成的字符串。单个操作指令包括:

1)U:白色面顺时针旋转90度

2)D:黄色面顺时针旋转90度

3)F:红色面顺时针旋转90度

4)B:橙色面顺时针旋转90度

5)L:绿色面顺时针旋转90度

6)R:蓝色面顺时针旋转90度

其中顺时针旋转定义为将该面朝向自己时的顺时针方向。

按WYROGB的顺序输出经过操作后6个面的状态。每个面首先输出中心块颜色,然后从此面面向自己时的左下角块开始,顺时针输出每块的颜色。输出一面后换行。

请设计一个数据结构表示魔方,并基于该数据结构完成功能。

请用C/C++,Java或Python语言实现。请注意尽量以可成功编译或可直接运行为标准来编写代码。


示例:

输入:LR

输出:

WOOOWRRRW

YRRRYOOOY

RWWWRYYYR

OYYYOWWWO

GGGGGGGGG

BBBBBBBBB

以下是我的实现:

我的实现

如果不能在上述连接中看,也可以看看百度贴吧这里

感觉这个题如果加上图像化处理可以做成一个魔方在电脑上的旋转程序,但目前水平有限。以上程序编译通过了,测试指令也符合预期,其它bug暂且不知,但总感觉那6个旋转处理函数可以以某种方式合并为一个,可以却不知道怎么做。

期待看到对此题有更漂亮的解答。

9.8 今天用开源EGE库+VC6.0用图形界面把它实现了下,把界面图发到百度贴吧了,把各个表面小块变化情况表现出来,相应源代码(百度网盘)。

你可能感兴趣的:(2015.8.23阿里的算法工程师在线笔试附加题第1题)