#30165: 旋轉只要操作2個數字


Williecraft (張哲維)

School : 國立臺中第一高級中學
ID : 152427
IP address : [220.134.17.21]
Last Login :
2023-12-24 18:01:04
f580. 2. 骰子 -- 2020年7月APCS | From: [125.230.231.149] | Post Date : 2022-05-02 23:50

骰子規則:任一面和其對面的點數相加為7

由此規則可以得知我們只要知道三個面就完全知道骰子現在的狀態了,接下來以 [左 上 右] 代表骰子方便講解

當a面朝b面旋轉時,a面會變為b原本對面的數字,而b面會變成a面原本的數字(聽起來好複雜)

用圖形來說,假設一顆 [4 1 2] 的骰子做 -1 的動作(向前轉,也就是頂部跑到左邊),會變成 [上, 左的對面 , 右] = [上, 7-左 , 右] = [1 3 2] (自己拿骰子轉轉看吧) 

所以只要用長度為3的陣列或結構就可以儲存一顆骰子,且每次旋轉只要變更頂部跟左右其中一面的數字就行囉!

 

補充:(以下純個人發現,與此題無關)

其實知道左右兩面就能得知骰子全貌了,只是因為程式實作起來相對複雜,運算也沒有比較快,所以沒有必要這麼做。

把骰子六面切成1 2 3 與 4 5 6 兩部分,可以發現1 2 3與4 5 6分別繞著一個頂點逆時針旋轉,且兩個分別的頂點是在正對面的

判斷方法:

1.先看左右兩邊是否都在1 2 3或4 5 6,如果是就能得出頂部與底部的兩個數字,再依照逆時針判斷:

例:如果左右是 [1 3],根據逆時針得知底面是 2,頂面就是 5。

2.如果不是,就算出其中一個的對面,再跟另一面做逆時針判斷就可以

例:如果左右是 [4 2],得知 4 對面是 3 ,根據逆時針得知頂面是 1 ,底面就是 6 。

 

 

 
#30480: Re: 旋轉只要操作2個數字


soyana66687@gmail.com (Dino\n)

School : 國立臺中科技大學
ID : 97371
IP address : [60.250.9.66]
Last Login :
2022-07-02 20:52:24
f580. 2. 骰子 -- 2020年7月APCS | From: [36.234.172.172] | Post Date : 2022-05-24 10:45

終於解出來了,感謝大神提點!

 
ZeroJudge Forum