华为机试二星题--转骰子

标题: 转骰子 | 时间限制: 1秒 | 内存限制: 262144K | 语言限制: 不限
骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。
骰子的初始状态和初始状态转动后的状态如图所示

这个题还是比较简单 找到规律字符串切片就行了 python3的代码如下:
规律就是L-R相对应,1L=3R,4圈变回初始状态,所以直接对4求余,初始状态123456,

L-563421
2L-213465
3L-653412
0/4L-123456

F-125643
2F-1254365
3F-126534

A-431256
2A-214356
3A-342156
n=input()
s='123456'
d={}
d['A']=(n.count('A')-n.count('C'))%4
d['L']=(n.count('L')-n.count('R'))%4
d['F']=(n.count('F')-n.count('B'))%4

while d['A']>0:
    s=s[3:1:-1]+s[:2]+s[4:]
    d['A']-=1
while d['L']>0:
    s=s[4:]+s[2:4]+s[1::-1]
    d['L']-=1
while d['F']>0:
    s=s[:2]+s[4:]+s[3:1:-1]
    d['F']-=1
print(s)



#华为##华为笔试#
全部评论
这是校招笔试题吗
点赞 回复 分享
发布于 2022-10-27 23:38 福建

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务