xzc的二階魔方最少步還原
時間限制:1000ms
空間限制:256M
其它說明:Special Judge
題面:
xzc是一個魔方愛好者,他最近在練習二階魔方全預判,他想得到12步之內的二階魔方還原步驟,你能幫幫他嗎?
如果你沒玩過魔方,那麼請看下面的說明:
符號說明:
我們遵循WCA規範,對魔方的轉動有如下操作:
U
,D
,L
,R
,F
,B
分別表示上,下,左,右,前,後面順時針旋轉90°U'
,D'
,L'
,R'
,F'
,B'
分別表示上,下,左,右,前,後面逆時針旋轉90°U2
,D2
,L2
,R2
,F2
,B2
則分別表示上,下,左,右,前,後面旋轉180°x
代表魔方整體向R方向旋轉90°y
代表魔方整體向U方向旋轉90°z
代表魔方整體向F方向旋轉90°x'
,y'
,z'
,x2
,y2
,z2
同理
我們這裏借用gan魔方CFOP公式圖來形象地表示:
二階魔方同理
正階魔方配色說明:
N*N*N的正階魔方(N>=2)標準配色爲(黃色爲頂,紅色在前看):
上黃 下白 左藍 右綠 前紅 後橙
黃白相對 藍綠相對 紅橙相對
xzc不喜歡轉動後面,左面和底層,因爲那樣不順手,影響還原魔方速度。現在他有一個打亂的二階魔方,已知每個面四個塊的顏色,你能告訴他如何在12步之內用集合{R
,U
,F
,R'
,U'
,F'
,R2
,U2
,F2
}中的操作還原嗎?(U2
,R2
,F2
都算作一步)
輸入格式:
輸入爲一個長度爲24的字符串,字符串的字母來自集合{Y
,W
,B
,G
,R
,O
},這六個字母分別表示黃色(Yellow)
,白色(White)
,藍色
,綠色
,紅色
,橙色
,長度爲24的字符串4個連續的表示一個面,一共六個面。表示的順序爲:上,下,左,右,前,後。 每個面的四個字母分別表示魔方展開圖中這個面的:左上
,右上
,右下
,左下
的顏色。具體可參見樣例說明。
輸出格式
輸出有兩行。第一行爲正整數step
, 代表還原魔方的步數x, 要求x<=12。第二行爲一個不包含空格的字符串str
,表示魔方還原的步驟。str
只能包含{R
,U
,F
,R'
,U'
,F'
,R2
,U2
,F2
}中的操作,每個操作算一步。答案不唯一,合理即可。保證輸入有12步之內的解,且輸入狀態非還原態。
樣例輸入:
BYGGYGWWORRBYRBWWOOBGYOR
樣例輸出:
9
R2U'F2UF'U2R2FR2
樣例說明:
- 樣例的打亂爲:黃頂紅前 R2 F’ R2 U2 F U’ F2 U R2
- 魔方打亂後的展開圖如下:
- 魔方打亂後的立體視圖如下:
- 我們可以發現樣例輸出的答案和打亂互爲逆過程,所以一定是合理的,而且步數也在12之內。