拼多多笔试之不同的骰子
问题
输入:n个骰子的状态(上下左右前后)
输出:骰子的种类数和每种的个数
相同的骰子:可以通过旋转达到相同状态的骰子
例如:123456 == 563412
一、首先定义骰子的标准状态:
- 1和2在相对面123 _ _ _
- 1和2在相邻面1_2 _ _ _
二、接着要实现骰子的状态转变
- 向前翻转90度
- 旋转90度
def t1(x):
return [x[4],x[5],x[2],x[3],x[1],x[0]]
def t2(x):
return [x[0],x[1],x[5],x[4],x[2],x[3]]
三、将一个随机状态转变为指定状态
def t(x):
# 使1不在左右面
if x[2] == 1 or x[3] == 1:
x = t2(x)
while x[0]!=1:
x = t1(x)
tag = 2
if x[1] == 2:
tag = 3
while x[2]!=tag:
x = t2(x)
return x
对输入的序列调用上面的转换函数,然后就可以计算骰子的种类数和个数