华为机试【21、转骰子】

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

输入描述: 输入一行,为只包含LRFBAC的字母序列,最大长度为50,字母可重复
输出描述: 输出最终状态
示例1:
输入
L R
输出
123456

def throw_dice(s):
    arr = ['1', '2', '3', '4', '5', '6']

    def throw(operator):
        if operator == "L":
            arr[0], arr[1], arr[2], arr[3], arr[4], arr[5] = arr[4], arr[5], arr[2], arr[3], arr[1], arr[0]
        elif operator == 'R':
            arr[0], arr[1], arr[2], arr[3], arr[4], arr[5] = arr[5], arr[4], arr[2], arr[3], arr[0], arr[1]
        elif operator == 'F':
            arr[0], arr[1], arr[2], arr[3], arr[4], arr[5] = arr[0], arr[1], arr[4], arr[5], arr[3], arr[2]
        elif operator == 'B':
            arr[0], arr[1], arr[2], arr[3], arr[4], arr[5] = arr[0], arr[1], arr[5], arr[4], arr[2], arr[3]
        elif operator == 'A':
            arr[0], arr[1], arr[2], arr[3], arr[4], arr[5] = arr[3], arr[2], arr[0], arr[1], arr[4], arr[5]
        elif operator == 'C':
            arr[0], arr[1], arr[2], arr[3], arr[4], arr[5] = arr[2], arr[3], arr[1], arr[0], arr[4], arr[5]
        return arr

    for i in s:
        throw(i)
    return ''.join(arr)


print(throw_dice("LRFBAC"))
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
头像
10-21 14:00
已编辑
中南大学 后端
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务