反转旋转骰子
【题目描述】
骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置到平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向右翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示逆时针旋转90度),现从初始状态开始,根据输入的动作序列,计算得到最终的状态。
【输入描述】
初始状态为:123456
输入只包含LRFBAC的字母序列,最大长度为50,可重复
【输出描述】
输出最终状态
输入例子:RA
输出例子:436512
def function_L(dict):
temp = dict['left']
dict['left'] = dict['up']
dict['up'] = dict['right']
dict['right'] = dict['down']
dict['down'] = temp
return dict
def function_R(dict):
temp = dict['right']
dict['right'] = dict['up']
dict['up'] = dict['left']
dict['left'] = dict['down']
dict['down'] = temp
return dict
def function_F(dict):
temp = dict['front']
dict['front'] = dict['up']
dict['up'] = dict['behind']
dict['behind'] = dict['down']
dict['down'] = temp
return dict
def function_B(dict):
temp = dict['behind']
dict['behind'] = dict['up']
dict['up'] = dict['front']
dict['front'] = dict['down']
dict['down'] = temp
return dict
def function_A(dict):
temp = dict['front']
dict['front'] = dict['left']
dict['left'] = dict['behind']
dict['behind'] = dict['right']
dict['right'] = temp
return dict
def function_C(dict):
temp = dict['front']
dict['front'] = dict['right']
dict['right'] = dict['behind']
dict['behind'] = dict['left']
dict['left'] = temp
return dict
def match(strings):
for char in strings:
if char not in ['L', 'R', 'F', 'B', 'A', 'C']:
return -1
break
flag = True
while(flag):
strings = input('输入操作序列:')
if len(strings)>0 and len(strings)<=50 and match(strings) != -1:
flag = False
else:
continue
dict = {'left': 1, 'right': 2, 'front': 3, 'behind': 4, 'up': 5, 'down': 6}
for c in strings:
if c == 'L':
function_L(dict)
elif c == 'R':
function_R(dict)
elif c == 'F':
function_F(dict)
elif c == 'B':
function_B(dict)
elif c == 'A':
function_A(dict)
elif c == 'C':
function_C(dict)
print(dict)
result = []
for value in dict.values():
result.append(str(value))
print(''.join(result))