0502: Dice

Dice

問題ページ

解き方

サイコロとそのサイコロの動かし方を記憶した辞書を用意し指示に従ってサイコロを動かす。

サイコロの初期配置はリストで表すと[1, 2, 3, 4, 5, 6]。

指示がきたら辞書を参照する。例えば、Northという指示の場合、

"North": (1, 5, 2, 3, 0, 4) となっている。タプルのそれぞれの値は現在のサイコロのインデックスを北方向に一回転した後のインデックスとなっている。

dice[0]にはdice[1]、dice[1]にはdice[5]の値を入れていく。

コード(python)

operation = {"North": (1, 5, 2, 3, 0, 4),
             "East": (3, 1, 0, 5, 4, 2),
             "West": (2, 1, 5, 0, 4, 3),
             "South": (4, 0, 2, 3, 5, 1),
             "Right": (0, 2, 4, 1, 3, 5),
             "Left": (0, 3, 1, 4, 2, 5)}

while True:
    n = int(input())
    if n == 0:
        break
    dice = [i+1 for i in range(6)]
    ans = 1
    for _ in range(n):
        # stripを使わないとRuntimeError
        indices = operation[input().strip()]
        dice = [dice[i] for i in indices]
        ans += dice[0]
    print(ans)